2017-02-08 21 views
1

私はCakePHP 3のクエリビルダフォーマットを使って、それをうまく利用する方法を学んできました。しかし、現時点では、私は左の結合を働かせるように見えません。CakePHP 3でLEFT joinを正しく実行するにはどうしたらいいですか?

私は結果に収集したい両方のテーブルで利用可能な情報があります:

$query = $this->find()->where(['userID' => $UID])->hydrate(false)->join([ 
     'table' => 'authgroups', 
     'alias' => 'a', 
     'type' => 'LEFT', 
     'conditions' => 'a.id = userGroup' 
    ]); 

    return $query->toArray(); 

私が正しくクックブックを読んでいる場合、これは動作するはずです - しかし、それはモデルで使用されていますこれは例と異なり、結果はその表からのみ返され、一見結合を無視します。コントローラーでこれを実行する必要がありますか?

答えて

4

これはモデルで動作します:

If you are joining table 'A' with table 'B' from table 'A' , 
By default it will select all fields from table A and no fields from table B. 

あなたは別のいくつかのフィールドを選択する必要があります。

私が推測すると、あなたのCakePHPではwell.The重要なことを作業クエリーかもしれないが参加ジョインということですテーブル:

これらのことがcakephpのドキュメントでうまく提供されているかどうかはわかりません。

+0

"unknown method:fields"が返されています - オプションの配列に追加することは効果がありませんでした。 – Merlin

+0

明らかに、fieldsはselectで置き換えられています。これは動作しています。 – Merlin

+0

もちろんそれはcakephp3として選択する必要があります。私はそれを逃すでしょう。 –

関連する問題