CakePHP4のselectの一括カラム登録方法

以前、CakePHPのクエリビルダ―でselectでカラムを登録すると他が消えてしまって、全部登録しなおさなくちゃいけなくてめんどくさいという記事を書きました。

でも、その後しらべたら、あんなことしなくても簡単にselectのカラムを一括登録する方法がありました。

実は、selectメソッドは配列だけじゃなくて、Tableも渡せるようで、こんな感じにするといいみたいです。
例は、UsersテーブルとhasOneでUserProfilesがある。Usersはidだけを出して、UserProfilesは全カラム出したいという場合。

$this->Users->find()
    ->select(['id'])
    ->contain(['UserProfiles'])
    ->select($this->Users->UserProfile);

何だ簡単じゃん!
ここの章にちゃんと書いてありました。

いままでいちいち書いて苦労していたのがバカみたいでしたね・・・。

タイトルとURLをコピーしました