サブクエリの仕組みを理解するのに苦労しています。条件の2つのフィールド/列を比較するには?
私が持っている想像:
$schools
->select($this->Schools)
->select([
'pupilcount' => $this->Pupils
->find()
->select([
$this->Pupils->find()->func()->count('*')
])
->where([
'Pupils.school_id' => 'Schools.id',
]),
私が経験しています問題は(私が思うに)Schools.id
は常に0であるので、カウントが0として返され、私は生徒が参加引き出すことができるということです、それは生徒を示しそこ。
私は追加するには、私のコードを変更してみました:
->select(['SCID' => 'Schools.id'])
と参照サブクエリではなく、動作しません、それは常にpupilcount
ために0を返すこと。
私はここで間違っていますか?
チェックも参照してください。生成されたSQL式オブジェクトでない限り、条件の右辺は常にパラメータとしてバインドされます。つまり、文字列リテラルと比較しています。 – ndm
私はそれを表現する必要がありますか?はい、私はSQLの – Sammaye
@ndmで私は、Expressionオブジェクトの関数を見たが、私はまだどちらが選択するかわかりません、私はちょうど "これを識別器として扱わない"と表示されないことがわかります – Sammaye