我在想什么是在我的项目中包含在作曲家依赖项中定义的实体的最佳方式。
由于我想使用Doctrine CLI工具创建并保持实体与数据库表模式同步,我需要注册它们的映射。然后我可以打电话:
./vendor/bin/doctrine orm:schema:create
没关系。然后我想生成实体:
./vendor/bin/doctrine orm:generate-entities ./src
但是这也生成了注册其实体映射的依赖项的实体,因此我最终得到:
./src/MyPoject/Entity
./src/ProjectDependency/Entity
这可能是一个问题,因为./src/ProjectDependency/Entity
重新声明已在./vendor/somemone/ProjectDependency/Entity/*
中某处定义的类。
有两种方法可以避免这种情况:
在composer.json
中不要使用通用目录自动加载器:
"autoload": {
"psr-0": { "": "src/" }
}
并特别指定我的命名空间:
"autoload": {
"psr-0": { "MyProject\\": "src/" }
}
使用此orm:generate-entities
仍会在./src
中生成实体,但这些实体不会自动加载,因此不会抛出类重新声明错误。
最终,我可以使用--filter
参数:
./vendor/bin/doctrine orm:generate-entities --filter="MyProject" ./src
和Doctrine2将仅为我的MyProject
生成实体类。
这让我想到了推荐的方法。也许idealy结合两者?
答案 0 :(得分:2)
我认为第二种方法是更好的方法。它是一种更清晰,更易于使用的方法。您应该选择--filter
选项:
./vendor/bin/doctrine orm:generate-entities --filter="MyProject" ./src