在CakePHP 3应用程序中,如何构建查询,该查询从不包含它关联表的表中查找?
-
21-12-2019 - |
题
是否有一种简单的方法来获得QueryBuilder的contain
方法的倒数?
我正在使用与加入表的属于源关联,以关联两种模型。
EmailStable $this->belongsToMany('Issues');
issuestable $this->belongsToMany('Emails');
$unparsed_emails = $this->Emails->find('all')->where(['issue_id is null']);
.
似乎是以下的倒数将提供没有相关问题的电子邮件:
$unparsed_emails = $this->Emails->find->contain(['Issues']); //need inverse of this
.
我想我必须从Cakephp 3 Orm / QueryBuilder文档中遗漏一些东西,但我找不到它。
解决方案
我还没有太多进入查询生成器,所以我不确定是否有更简单的方法,但左边的连接应该这样做。
$this->Emails
->find('all')
->leftJoin('emails_issues', 'emails_issues.email_id = Emails.id')
->where('emails_issues.id IS NULL');
.
这应该转换为像
这样的查询SELECT
Emails.id AS `Emails__id`, ...
FROM
emails AS Emails
LEFT JOIN
emails_issues emails_issues ON emails_issues.email_id = Emails.id
WHERE
emails_issues.id IS NULL
.
它将选择没有分配任何问题的所有电子邮件。
不隶属于 StackOverflow