Для локальной разработки развернула проект в докере на windows, используя официальный репозиторий https://github.com/bitrix-tools/env-docker. Столкнулась с тем, что модуль миграций не видит все миграции в папке /local/php_interface/migrations, большая часть миграций "теряется". Проблема оказалась в DirectoryIterator в VersionManager::getFiles(). Описание проблемы из Интернета:
https://bugs.php.net/bug.php?id=81669
docker/for-win#12405
Пришлось лезть в код модуля и менять скан папки через scandir(), чтобы считывались все миграции. DirectoryIterator был всегда и никому не доставлял проблем, но я столкнулась с этим. Случай частный, поэтому вам решать, стоит ли тут что-то менять и не возникнет ли от этого потенциальных проблем. У меня работает так:
public function getFiles(): array
{
$dir = $this->getVersionConfig()->getVal('migration_dir');
$files = [];
$items = scandir($dir);
if ($items === false) {
return $files;
}
foreach ($items as $name) {
$path = $dir . DIRECTORY_SEPARATOR . $name;
if (!is_file($path)) {
continue;
}
if (pathinfo($name, PATHINFO_EXTENSION) !== 'php') {
continue;
}
$filename = pathinfo($name, PATHINFO_FILENAME);
$timestamp = $this->getVersionTimestamp($filename);
if (!$timestamp) {
continue;
}
$files[$filename] = [
'version' => $filename,
'location' => $path,
'ts' => $timestamp,
];
}
return $files;
}
Для локальной разработки развернула проект в докере на windows, используя официальный репозиторий https://github.com/bitrix-tools/env-docker. Столкнулась с тем, что модуль миграций не видит все миграции в папке /local/php_interface/migrations, большая часть миграций "теряется". Проблема оказалась в DirectoryIterator в VersionManager::getFiles(). Описание проблемы из Интернета:
https://bugs.php.net/bug.php?id=81669
docker/for-win#12405
Пришлось лезть в код модуля и менять скан папки через scandir(), чтобы считывались все миграции. DirectoryIterator был всегда и никому не доставлял проблем, но я столкнулась с этим. Случай частный, поэтому вам решать, стоит ли тут что-то менять и не возникнет ли от этого потенциальных проблем. У меня работает так: