Ite*_*tor 5 php symfony doctrine-orm
我有一个@OneToMany关系:
/**
* @OneToMany(targetEntity="\MyApp\Entities\Content", mappedBy="clist")
* @OrderBy({"contentOrder"="ASC", "id"="ASC"})
*/
private $contents;
Run Code Online (Sandbox Code Playgroud)
我得到了所有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);
Run Code Online (Sandbox Code Playgroud)
选项 2
另一种选择是使用过滤器,您可以确保只要过滤器处于活动状态,每个查询都会确保附加了“位置”约束。
如果您有一些属性在大多数时间为您的大多数实体查询(例如 ClientId 或 Deleted 属性),这通常是有意义的。
| 归档时间: |
|
| 查看次数: |
3338 次 |
| 最近记录: |