Symfony中doctrine:migrations:execute命令无法找到自定义文件夹内的Doctrine迁移文件
问题分析与解决方法
这并不是doctrine:migrations:execute命令不支持自定义迁移路径配置,而是你使用命令的方式需要适配自定义命名空间的设置。
核心原因
当你配置了自定义的迁移命名空间App\Migrations后,你的迁移类的完整类名是App\Migrations\Version20220329211652(而非仅版本号对应的类名)。而execute命令默认会在默认迁移命名空间(通常是Doctrine\Migrations)中查找类,所以仅输入版本号20220329211652时,它找不到你自定义路径下的迁移类。
而doctrine:migrations:migrate和doctrine:migrations:list命令是直接扫描你配置的migrations_paths目录下的文件,所以不受这个限制,能正常工作。
两种解决办法
使用完整类名执行命令
直接指定迁移类的完整命名空间+类名:doctrine:migrations:execute App\Migrations\Version20220329211652(注意类名是
Version+版本号,比如你的迁移文件如果是Version20220329211652.php,类名就是这个)配置默认迁移命名空间
在doctrine_migrations配置中添加default_migration_namespace,指定为你的自定义命名空间,这样execute命令会默认去这个命名空间查找类,你就可以继续用版本号执行命令了:doctrine_migrations: migrations_paths: 'App\Migrations': "%kernel.project_dir%/src/Migrations" default_migration_namespace: 'App\Migrations'配置完成后,执行
doctrine:migrations:execute 20220329211652就能正常找到迁移类了。
内容的提问来源于stack exchange,提问作者user18399928
相关产品推荐
相关产品推荐

