CakePHP 3 앱에서는 연결된 테이블을 포함하지 않는 테이블에서 모두를 찾는 모든 쿼리를 구축합니까?
-
21-12-2019 - |
문제
QueryBuilder의 contain
메소드의 역 인수를 얻는 간단한 방법이 있습니까?
두 모델을 연결하기 위해 가입 테이블과 함께 SpectStomany Associations를 사용하고 있습니다.
Emailstable $this->belongsToMany('Issues');
발급 가능한 $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