Symfony 3.4中doctrine:generate:entity命令消失问题求助
doctrine:generate:entity等命令消失的问题 首先得明确:你之前用的doctrine:generate:entity(以及doctrine:generate:form、doctrine:generate:crud)这些命令并不属于Doctrine核心包,它们是由SensioGeneratorBundle提供的开发工具命令,只在开发环境下可用。命令消失的大概率原因是这个bundle被移除或者没有正确注册。
下面是具体的排查和解决步骤:
1. 检查SensioGeneratorBundle是否已安装
打开项目根目录下的composer.json文件,查看require-dev部分是否包含sensio/generator-bundle:
"require-dev": { // ...其他依赖 "sensio/generator-bundle": "^3.1" }
如果没有这一行,执行以下命令安装它(因为是开发环境依赖,加上--dev):
composer require --dev sensio/generator-bundle
2. 确认Bundle在AppKernel中正确注册
打开app/AppKernel.php文件,检查在开发环境的bundle注册块里是否包含SensioGeneratorBundle:
public function registerBundles() { $bundles = [ // ...核心bundle,比如FrameworkBundle、DoctrineBundle等 ]; if (in_array($this->getEnvironment(), ['dev', 'test'], true)) { $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); // 确认这一行存在 } return $bundles; }
如果没有这行,把它添加到dev环境的bundle数组里——因为这个bundle只用于开发,不需要在生产环境加载。
3. 清除开发环境缓存
最后,清除dev环境的缓存,确保新安装/注册的bundle生效:
php bin/console cache:clear --env=dev
完成以上步骤后,再执行bin/console | grep doctrine:generate,你应该就能看到消失的doctrine:generate:entity、doctrine:generate:form和doctrine:generate:crud命令了。
补充说明:你现在看到的doctrine:generate:entities(复数形式)是Doctrine核心包自带的命令,作用是根据现有映射生成实体类的getter/setter方法,和你之前用的创建新实体的单数命令不是同一个功能哦。
内容的提问来源于stack exchange,提问作者Med Karim Garali

