例えば、AuthorというモデルがhasManyアソシエーションで複数のBooksを持っている時、
以下のようにある特定のidのAuthorに対してcontainsでBooksも取得したい状況において、
function getAuthor($id){ $condition = ['Authors.id' => $id]; $contain = ["Books"]; return $this->find('all')->where($condition)->contain($contain)->first(); }
ひもづくBooksを特定のフィールドで並べておきたいという要求は多くあると思います。
大抵Booksはcreatedで過去のものから順番に並べておきたいので、そのような場合にはAuthorsTableのassociationを以下のように書くと良いです。
public function initialize(array $config){ // 抜粋 $this->hasMany( 'Books', [ 'foreignKey' => 'author_id', 'sort' => ['Books.created' => 'ASC'], ] ); }
ここでアソシエーションの設定を変更すると、以降oderbyで明示的にアソシエーションを並び変えない限りこのsortで指定した順番でアソシエーションが取得されます。