今、アソシエーションにおいて、”Books” belongsTo “Author”という状況を考えます。
ある、Authorを名前で指定して、そのAuthorの持つBooksについて、その本の金額の総和を求めたいとき、collectionクラスにあるメソッドを利用すると便利です。
クエリを実行して、
$query = $authors->find("all")->where(["name" => "J. K. Rowling"])->contain(["Books"]);
下のようなデータが得られるとします。
// Author { "name" => "J. K. Rowling" "books" => [ { "title" => "Harry Potter I", "price" => 100 }, { "title" => "Harry Potter II", "price" => 200 }, ] }
ここから本の金額の合計を算出する時、ここにあるメソッドを参考に
$total_price = $query->extract("books.{*}.price")->sumOf();
などでいけると思います。