原则-如何检查集合是否包含实体 [英] Doctrine - how to check if a collection contains an entity
本文介绍了原则-如何检查集合是否包含实体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个实体 User
和 Article
,它们之间具有多对多关系,因为 Article
可以有很多作者.
I have two entities User
and Article
with many-to-many relation as Article
can have many authors.
class User
{
/** @var string */
public $name;
/** @var Collection<Article> */
public $articles;
}
class Article
{
/** @var string */
public $title;
/** @var Collection<User> */
public $authors;
}
如何使用DQL查找具有指定(共同)作者的所有文章?
How I can find all Articles with specified (co)author using DQL?
推荐答案
使用 MEMBER OF
表达式.
您的DQL查询可能会
SELECT art FROM Article art WHERE :user MEMBER OF art.authors
或使用查询生成器
$queryBuilder = $repository->createQueryBuilder("art");
$queryBuilder->where(":user MEMBER OF art.authors");
或者,您可以加入和过滤收藏集
Alternatively you can join and filter collection
SELECT art FROM Article art JOIN art.authors aut WHERE aut = :user
或
$queryBuilder = $repository->createQueryBuilder("art");
$queryBuilder->join("art.authors", "aut");
$queryBuilder->where("aut = :user");
这篇关于原则-如何检查集合是否包含实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文