containの制限
Modelから関連データを取得する際に、containを指定してデータを取得する方法があります。
このcontainは、とても便利なメソッドです。
しかしながら、関連データ側のカラムについて、操作する場合には、色々と制限があります。
関連データ側のカラムについて、ソートする場合にもこの制限が問題になります。
sortで指定できるカラムは、軸になっているテーブルのカラムだけしかソート指定ができません。
また、実行時にエラーにはならないので、気が付きにくいです。
この解決については、色々な方法があります。
古いバージョンでは、virtualFieldsを利用した方法が一般的なようです。
そもそも、virtualFieldsで対応するならば、
検索テーブルの主軸を変更することを検討するべきだとは思いますが、
手軽に解決するには、下記のような方法も有効です。
ソート方法
1 2 3 4 5 6 7 8 9 10 |
$data = $this->Mains->find() ->contain([ 'Details', 'Details.Notes' => function ($d) { return $d->order(array( 'Notes.seq' => 'asc' )); }, ]) |
もっと良い方法もあるかと思いますが、
1つの解決策として有効だと思います。