在 CakePHP 中订购 'Contain' 模型 3.x
Order 'Contain' Model in CakePHP 3.x
我在 AnotherThing
中有多个 Things
现在我正尝试在我的 AnotherThing Controller
中的编辑操作中对它们进行排序 - 我可以访问 Things
就好了我的编辑,但我想对它们进行不同的排序(而不是根据它们的 ID),例如 Things.pos
此处的最佳做法是什么?我用
试过了
public $hasMany = array(
'Thing' => array(
'order' => 'Thing.pos DESC'
)
);
但没有任何改变。有什么想法吗?
过度阅读文档。抱歉!
无论如何,如果有人要寻找答案,请看这里:
http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#sorting-contained-associations
编辑:
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']
]
]);
如果您在关联的 table 中定义了一些自定义查找器方法,则可以在 contain() 中使用它们。对于你的情况,你可以像下面这样解决这个问题:
$query->contain([
'Comments' => function ($q) {
return $q->order(['created'=>'DESC']);
}
]);
我在 AnotherThing
中有多个 Things
现在我正尝试在我的 AnotherThing Controller
中的编辑操作中对它们进行排序 - 我可以访问 Things
就好了我的编辑,但我想对它们进行不同的排序(而不是根据它们的 ID),例如 Things.pos
此处的最佳做法是什么?我用
试过了public $hasMany = array(
'Thing' => array(
'order' => 'Thing.pos DESC'
)
);
但没有任何改变。有什么想法吗?
过度阅读文档。抱歉!
无论如何,如果有人要寻找答案,请看这里: http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#sorting-contained-associations
编辑:
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'] ] ]);
如果您在关联的 table 中定义了一些自定义查找器方法,则可以在 contain() 中使用它们。对于你的情况,你可以像下面这样解决这个问题:
$query->contain([
'Comments' => function ($q) {
return $q->order(['created'=>'DESC']);
}
]);