Cakephp,排序关联表

jdg4fx2g  于 2022-11-24  发布在  PHP
关注(0)|答案(5)|浏览(156)

当我搜索一个“有很多”其他东西的模型时。
例如,博客文章有许多类别。
当搜索与类别关联的博客文章时,我如何排序关联的类别?当返回数组时,它忽略类别模型上的顺序,默认为它通常的id顺序。
干杯干杯干杯

j2cgzkjk

j2cgzkjk1#

此外,您可以在模型的关系中设定顺序。

<?php
class Post extends AppModel {
  var $hasMany = array(
    'Category' => array(
        'className' => 'Category',
        ...
        'order' => 'Category.name DESC',
        ....
    ),
}?>
jaql4c8m

jaql4c8m2#

在cakephp 3中使用“sort”而不是“order”:

<?php
class Post extends AppModel {
  var $hasMany = array(
    'Category' => array(
        'className' => 'Category',
        ...
        'sort' => 'Category.name DESC',
        ....
    ),
}?>
hs1rzwqc

hs1rzwqc3#

您可以使用ContainableBehavior执行此操作:

$this->Post->find('all', array('contain' => array(
    'Category' => array(
        'order' => 'Category.created DESC'
    )
)));

http://book.cakephp.org/view/1325/Containing-deeper-associations

inn6fuwd

inn6fuwd4#

您可以指定find方法参数的order属性。否则,它将默认为最顶层/父模型的顺序。在您的情况下,Category.id

wj8zmpe1

wj8zmpe15#

按关联模型中的列排序需要设置sortWhitelist

$this->paginate['order'] = [ 'Fees.date_incurred' => 'desc' ];
$this->paginate['sortWhitelist'] = ['Fees.date_incurred', 'Fees.amount'];
$this->paginate['limit'] = $this->paginate['maxLimit'] = 200;

相关问题