Model view controller Cakephp 2.0:如何为通过find()递归检索的数据提供ORDER BY指令?

Model view controller Cakephp 2.0:如何为通过find()递归检索的数据提供ORDER BY指令?,model-view-controller,sql-order-by,cakephp-2.0,recursive-query,Model View Controller,Sql Order By,Cakephp 2.0,Recursive Query,我正在尝试建立一个有很多hasMany/hasOne关系的模型,我希望在“添加”视图的下拉菜单中按字母顺序显示所拥有的模型。我不知道如何通过指令向递归检索的模型提供ORER。这就是我尝试过的: $services = $this->service->find('all', array( 'order'=>array(

我正在尝试建立一个有很多hasMany/hasOne关系的模型,我希望在“添加”视图的下拉菜单中按字母顺序显示所拥有的模型。我不知道如何通过指令向递归检索的模型提供ORER。这就是我尝试过的:

$services =  $this->service->find('all', array(
                                       'order'=>array(
                                               'Service.start_year DESC',
                                               'Servicecat.title DESC'
                                               ), 
                                        'recursive'=>0
                                          ) );

但这当然不会带来任何变化。我怀疑它不是很复杂,我只是在食谱/api中找不到解决方案。想法?

你可以用几种方法来实现。我更喜欢对模型使用可包含的行为,然后它允许您精细地控制如何检索模型。您还可以在模型的关系定义中设置订单

模型方式

$hasMany = array(
    'Servicecat' => array(
        'order' => array(
            'Servicecat.title DESC'
        )
    )
);
可容纳方式

$hasMany = array(
    'Servicecat' => array(
        'order' => array(
            'Servicecat.title DESC'
        )
    )
);
在模型中,将其设置为使用可包含行为:

public $actsAs = array('Containable');
然后,当您从控制器中查找时,可以显式地说明链接了哪些模型。您可以使用多维数组来确定递归的深度

$services = $this->Service->find(
    'all',
    array(
        'contains' => array(
             'Servicecat' => array(
                 'order' => array('Servicecat.title' => 'DESC')
             )
         ),
         'order' => array('Services.start_year' => 'DESC')
    )
);

你可以用几种方法来做。我更喜欢对模型使用可包含的行为,然后它允许您精细地控制如何检索模型。您还可以在模型的关系定义中设置订单

模型方式

$hasMany = array(
    'Servicecat' => array(
        'order' => array(
            'Servicecat.title DESC'
        )
    )
);
可容纳方式

$hasMany = array(
    'Servicecat' => array(
        'order' => array(
            'Servicecat.title DESC'
        )
    )
);
在模型中,将其设置为使用可包含行为:

public $actsAs = array('Containable');
然后,当您从控制器中查找时,可以显式地说明链接了哪些模型。您可以使用多维数组来确定递归的深度

$services = $this->Service->find(
    'all',
    array(
        'contains' => array(
             'Servicecat' => array(
                 'order' => array('Servicecat.title' => 'DESC')
             )
         ),
         'order' => array('Services.start_year' => 'DESC')
    )
);

明亮的完美的谢谢。如果我们希望整个结果按内部模型排序,我们如何排序。假设我有User和Events表的关联,还有User和UserProfile表。现在,在我的视图中,我显示了事件列表,其中包含用户配置文件中的用户名称。我希望对用户名具有排序功能,但我获取的数据来自与用户关联的事件表,并且用户与UserProfile关联。我想根据用户名对事件列表进行排序。可能吗?太棒了。完美的谢谢。如果我们希望整个结果按内部模型排序,我们如何排序。假设我有User和Events表的关联,还有User和UserProfile表。现在,在我的视图中,我显示了事件列表,其中包含用户配置文件中的用户名称。我希望对用户名具有排序功能,但我获取的数据来自与用户关联的事件表,并且用户与UserProfile关联。我想根据用户名对事件列表进行排序。可能吗?