gpt4 book ai didi

php - 在 Doctrine 中过滤 @OneToMany

转载 作者:可可西里 更新时间:2023-11-01 00:40:15 24 4
gpt4 key购买 nike

我有一个@OneToMany 关系:

/**
* @OneToMany(targetEntity="\MyApp\Entities\Content", mappedBy="clist")
* @OrderBy({"contentOrder"="ASC", "id"="ASC"})
*/
private $contents;

我得到了所有的Content,其中clist 属性是当前实例的id。但是 Content 类也有一个 isDeleted 属性。如果它设置为 true,我想将它从列表中排除。

这怎么可能?我可以在 getContents() 函数中过滤列表,但我希望有更好的解决方案。也许在 @OneToMany 关系的定义中以某种方式

最佳答案

选项 1

我推荐使用 Criteria过滤集合

use Doctrine\Common\Collections\Criteria;

$clist = $entityManager->find('Clist', $clistId);
$contentCollection = $clist->getContents();

$criteria = Criteria::create()
->where(Criteria::expr()->eq("isDeleted", false))
;

$undeletedContents = $contentCollection->matching($criteria);

选项 2

另一种选择是使用 Filters只要过滤器处于事件状态,您就可以确保每个查询都确保附加了“where”约束。

如果您有一些大多数实体在大多数时间都被查询的属性(例如 ClientId 或 Deleted 属性),这通常是有意义的。

关于php - 在 Doctrine 中过滤 @OneToMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42855516/

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