CakePHP3のHasManyに動的にソートを適用する。
注文(Orders) > 発注書(PurchaseOrders) > 業者(Supplier)がありました。
select条件2のみであればOrdersのHasManyで設定すればよいがselect条件1でエラーとなる。
select条件1:業者まで繋げない
Orders>PurchaseOrders
select条件2:業者まで繋げる。
Orders>PurchaseOrders>Suppliers
HasManyクラスのsetSort()を使う。
$this->Orders->PurchaseOrders->setSort(['Suppliers.name'=>'asc']);
で動的に設定できます。
すでに既存のSortが設定されている場合。
(バージョン 3.5.17にて確認)
ソースコードをみると、$this->_sortを上書きしているだけのセッターなので、そのまま上書きな感じでした。
/**
* Sets the sort order in which target records should be returned.
*
* @param mixed $sort A find() compatible order clause
* @return $this
*/
public function setSort($sort)
{
$this->_sort = $sort;
return $this;
}
コメントを残す