php - 在 Doctrine2 DQL 中通过 ManyToOne 关联选择实体

标签 php doctrine-orm

我有两个实体,UserAccount 和 UserEmail。 UserAccount 与 UserEmail 具有 OneToMany 关联。我想要做的是选择具有给定电子邮件的 UserAccount。

如何使用 DQL 生成类似以下 SQL JOIN 查询的内容:

SELECT a.* FROM user_account a
    INNER JOIN user_email e ON e.account_id = a.id
    WHERE e.address = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="04776b69616b6a6144617c65697468612a676b69" rel="noreferrer noopener nofollow">[email protected]</a>'

如果我这样做SELECT account, email FROM UserEmail email JOIN email.account account WHERE email.address = :email它给我发回了电子邮件,但这并不是我真正想要的。

我是否只需取回电子邮件,然后从中获取帐户即可?

最佳答案

这就是 fetch-joining全部内容是:您的“电子邮件”对象包含此处的帐户。

SELECT e, a FROM UserEmail e JOIN e.account a WHERE e.address = :email

然后简单地做

$account = $email->getAccount();

执行此操作的另一种方法是选择具有该电子邮件地址的所有帐户:

SELECT a FROM UserAccount a JOIN a.emails e WHERE e.address = :email

这将直接检索帐户对象。

关于php - 在 Doctrine2 DQL 中通过 ManyToOne 关联选择实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983970/

相关文章:

php - Mysql设置值相对于其他值?

php - 将 AMI 从单独的账户复制到单独的区域

Symfony2 : Doctrine subquery in the WHERE clause including a LIMIT

postgresql - 每次迁移时改变 uuid 列的学说

mysql - 原则 2 和垂直划分

php - 具有连接的 Doctrine 查询构建器返回实体数组而不是分组结果

symfony - Doctrine 2 : OneToMany Relation, 按外键排序

php - Facebook iframe 问题

php - PHP : Log into an “global array”

PHP Cookie 不起作用