gpt4 book ai didi

php - Doctrine 实体管理器通过空数组集合查找

转载 作者:可可西里 更新时间:2023-11-01 01:13:14 26 4
gpt4 key购买 nike

我有一个名为 Cycle 的实体,它与 CycleActeur 具有 OneToMany 关联(请参见下面的代码)。

我希望能够从我的 Controller 中使用一个简单的 doctrine findBy* 方法,获取数据库中所有没有关联 CycleActeur 对象的 Cycle 对象。

也就是这样说:

$manager = $this->getContainer()->get('doctrine.orm.entity_manager');
$cycleManager = $manager->getRepository('ESI67Zen2Bundle:Cycle');
$cyclesWithNoCycleActeur = $cycleManager->findBy('acteurs', null);

有没有一种方法可以做到这一点而不必在 CycleRepository 中编写特定的方法?

从Cycle类代码中提取

class Cycle {
/**
* @ORM\OneToMany(
* targetEntity="CycleActeur",
* mappedBy="cycle",
* orphanRemoval=true)
*/
private $acteurs;
}

从Cycle类代码中提取

class CycleActeur {
/**
* @var Cycle Le cycle concerné
*
* @ORM\ManyToOne(targetEntity="Cycle", inversedBy="acteurs")
* @ORM\JoinColumn(name="cycle_id", referencedColumnName="id")
*
*/
private $cycle;
}

最佳答案

你的 Cycle 实体是关系的反面,它在数据库中的表没有 'acteurs' 列,所以你不能使用 findBy(['acteurs'=>null]) findByActeurs(空)。但无论如何你都可以做一些事情:

$manager = $this->getContainer()->get('doctrine.orm.entity_manager');
$cycleManager = $manager->getRepository('ESI67Zen2Bundle:Cycle');
$allCycles = $cycleManager->findAll();

$cyclesWithNoCycleActeur = [];
foreach($allCycles as $cycle)
{
if($cycle->getActeurs()->isEmpty())
{
$cyclesWithNoCycleActeur[] = $cycle;
}
}

关于php - Doctrine 实体管理器通过空数组集合查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47329953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com