Tur*_*ise 4 php doctrine query-builder symfony doctrine-orm
我有一个名为 Cycle 的实体,与 CycleActeur 具有 OneToMany 关联(请参见下面的代码)。
\n\n我希望能够使用控制器中的简单原则 findBy* 方法来获取数据库中没有关联的 CycleActeur 对象的所有 Cycle 对象。
\n\n也就是说:
\n\n$manager = $this->getContainer()->get(\'doctrine.orm.entity_manager\');\n$cycleManager = $manager->getRepository(\'ESI67Zen2Bundle:Cycle\');\n$cyclesWithNoCycleActeur = $cycleManager->findBy(\'acteurs\', null);\nRun Code Online (Sandbox Code Playgroud)\n\n有没有一种方法可以做到这一点,而无需在 CycleRepository 中编写特定方法?
\n\n从 Cycle 类代码中摘录
\n\nclass Cycle {\n /**\n * @ORM\\OneToMany(\n * targetEntity="CycleActeur", \n * mappedBy="cycle", \n * orphanRemoval=true)\n */\n private $acteurs;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n从 Cycle 类代码中摘录
\n\nclass CycleActeur {\n /**\n * @var Cycle Le cycle concern\xc3\xa9\n * \n * @ORM\\ManyToOne(targetEntity="Cycle", inversedBy="acteurs")\n * @ORM\\JoinColumn(name="cycle_id", referencedColumnName="id")\n * \n */\n private $cycle;\n}\nRun Code Online (Sandbox Code Playgroud)\n
小智 5
在这种情况下(在我看来)最好的方法是使用 DQL 的条件IS EMPTY:
$manager
->createQueryBuilder()
->from(Cycle::class, 'cycle')
->select('cycle')
->andWhere('cycle.acteurs IS EMPTY')
->getQuery()
->getResult()
;
Run Code Online (Sandbox Code Playgroud)
您可以在 EntityRepository 或您有权访问 EntityManager 的任何地方使用此代码。
来源:学说文档。
| 归档时间: |
|
| 查看次数: |
5242 次 |
| 最近记录: |