1

我需要来自各种表的数据。我使用 cakephp 的$hasMany变量绑定它们。成功获取数据。但我需要对来自$hasMany表的结果进行排序。

例如。我有两张桌子

  • Survey
  • Questions

现在Survey表格包含与调查相关的数据,如,titleid表格包含相关调查的问题。我将问题表与调查模型中的调查绑定在一起。现在我在表中有一个字段 name 。我需要按该顺序获取数据。purposeQuestionsQuestionsordering

我怎样才能以这种方式获取它?

请帮我。

4

2 回答 2

2

如果要在从 db 获取数据时直接对数据进行排序

在模型中添加表之间的关系时,您可以定义默认顺序。在您的调查模型中:

var $hasMany = array(
    'Question' => array(
        'order' => 'ordering DESC'
    )
);

请参阅http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasmany

您还可以在条件数组中从控制器检索数据时定义自定义排序,http ://book.cakephp.org/2.0/en/models/retrieving-your-data.html#find :

$conditions = array(
    'order' => array('Question.ordering DESC')
);

如果您使用分页器组件对结果进行分页,则可以像以下示例 book.cakephp.org/2.0/en/core-libraries/components/pagination.html#query-setup 一样设置它:

public $paginate = array(
    'order' => array(
       'Question.ordering' => 'desc'
    )
);

如果要对视图中呈现的数据进行排序

在这里,您可以将分页助手(与控制器中的分页组件一起)用作:

echo $this->Paginator->sort('Question.ordering');

见 book.cakephp.org/2.0/en/core-libraries/helpers/paginator.html#creating-sort-links

很抱歉删除了最后两个链接上的“http://”,但我不能发布两个以上的链接(<10 个代表)。

于 2013-01-17T13:18:21.277 回答
0

在 CakePHP 中,您可以按关联的表进行排序。但你需要按列排序,你应该在你的视图中使用这样的东西:

<?php echo $this->Paginator->sort('Question.ordering'); ?>
于 2013-01-17T11:45:01.090 回答