CakePHP 3 앱에서는 연결된 테이블을 포함하지 않는 테이블에서 모두를 찾는 모든 쿼리를 구축합니까?

StackOverflow https://stackoverflow.com//questions/25019422

  •  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
.

할당 된 문제가없는 모든 전자 메일을 선택합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top