【问题标题】:How to handle Doctrine2 entities defined in composer dependencies如何处理作曲家依赖项中定义的 Doctrine2 实体
【发布时间】:2015-01-28 15:04:26
【问题描述】:

我正在考虑在我的项目中包含在 composer 依赖项中定义的实体的最佳方式。

由于我想使用 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 生成实体类。

这让我想到了推荐的方法。也许最好将两者结合起来?

【问题讨论】:

    标签: php doctrine-orm


    【解决方案1】:

    我认为第二种方法更可取。它是一种更清晰、更易于使用的方法。你应该选择--filter 选项:

    ./vendor/bin/doctrine orm:generate-entities --filter="MyProject" ./src
    

    【讨论】:

      猜你喜欢
      • 2014-03-10
      • 2013-04-20
      • 2021-05-22
      • 2016-09-23
      • 2021-10-22
      • 2013-04-15
      • 2016-01-15
      • 1970-01-01
      • 2015-01-11
      相关资源
      最近更新 更多