原则-如何检查集合是否包含实体 [英] Doctrine - how to check if a collection contains an entity

查看:65
本文介绍了原则-如何检查集合是否包含实体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个实体 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆