我有一个@OneToMany
关系:
/**
* @OneToMany(targetEntity="\MyApp\Entities\Content", mappedBy="clist")
* @OrderBy({"contentOrder"="ASC", "id"="ASC"})
*/
private $contents;
我得到了所有Content
' s,clist
属性是当前实例的id。但Content
类也有isDeleted
属性。如果设置为true,我想将其从列表中排除。
怎么可能?
我可以过滤getContents()
函数中的列表,但我希望有更好的解决方案。也许在某种程度上,@OneToMany
关系的定义
答案 0 :(得分:3)
选项1
我建议使用Criteria来过滤集合
StringBuilder sb = new StringBuilder("status=").append(status).append(" ,msg=").append(msg);
System.out.println(sb);
选项2
另一种选择可能是使用Filters,您可以确保只要过滤器处于活动状态,每个查询都会确保附加“where”约束。
如果您的大多数实体(例如ClientId或Deleted属性)在大多数情况下都会查询某些属性,这通常会有意义。
答案 1 :(得分:2)
如果您使用ArrayCollection来存储您的关系,那么您可以这样做:
$criteria = Criteria::create()->where(Criteria::expr()->eq("isDeleted", false));
$contents = $yourMainClass->getContents()->matching($criteria);
希望这有帮助,
Alexandru Cosoi