Order 'Contain' Model in CakePHP 3.x
Solution 1
Overread the Documentation. Sorry!
Anyways, If someone looks for an answer, here it is: http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#sorting-contained-associations
edit:
When loading HasMany and BelongsToMany associations, you can use the sort option to sort the data in those associations:
$query->contain([ 'Comments' => [ 'sort' => ['Comment.created' => 'DESC'] ] ]);
Solution 2
If you have defined some custom finder methods in your associated table, you can use them inside contain(). For your case you can solve this like below:
$query->contain([
'Comments' => function ($q) {
return $q->order(['created'=>'DESC']);
}
]);
Isengo
XHProf, Jenkins,Gitlab CI, Docker, Shopware, Cakephp, Symfony, Laravel, Stripe, Paypal...
Updated on July 13, 2022Comments
-
Isengo almost 2 years
I have multiple
Things
inAnotherThing
now I am trying to order them in my edit action in myAnotherThing Controller
- I can access theThings
just fine in my edit, but I want to sort them differently (not over their ID), for exampleThings.pos
Whats the best practice here? I tried it with
public $hasMany = array( 'Thing' => array( 'order' => 'Thing.pos DESC' ) );
But nothing changed. Any idea?