서브 쿼리 작업 방법을 찾는 데 어려움을 겪고 있습니다.조건의 두 필드/열을 비교하는 방법은 무엇입니까?
$schools
->select($this->Schools)
->select([
'pupilcount' => $this->Pupils
->find()
->select([
$this->Pupils->find()->func()->count('*')
])
->where([
'Pupils.school_id' => 'Schools.id',
]),
의 I가 경험하고 문제를 (내 생각) Schools.id
는 항상 0입니다 그래서 카운트가 나는 학생들이 참여 꺼내 수 0으로 반환됩니다이며 학생들를 보여줍니다
나는이 상상 그곳에.
는 내가 추가 내 코드를 변경 시도 :->select(['SCID' => 'Schools.id'])
작동하지 않는 하위 쿼리에 있지만, 그것은 항상 pupilcount
0을 반환 할 것을 참조.
내가 뭘 잘못하고 있니?
확인 참조 생성 된 SQL 표현 개체가 아니라면 조건의 오른쪽은 항상 매개 변수로 바인딩됩니다. 즉 문자열 리터럴과 비교할 수 있습니다. – ndm
오우 그래서 표현해야하니? 왜냐하면 그렇기 때문에 SQL에서 – Sammaye
@ndm이라는 것을 볼 수 있습니다. Expression 개체의 함수를 살펴 보았지만 선택할 수있는 함수가 무엇인지 확실하지 않습니다.이 함수는 "indentifier로 처리하지 마십시오."라는 메시지를 볼 수 없습니다. – Sammaye