2013-05-11 39 views
4

我正在使用CActiveDataprovider显示来自不同表格的数据。现在我陷入了一个问题。我有两个表(项目和类别),他们都得到了priority_order列,我需要使用两列的顺序来显示数据。Yii:按条件多次订购

例如:有两个类别和六个项目属于这些类别:

  • 食品(priority_order 1)
    1. food_item1(priority_order 1)
    2. fodd_item2(priority_order 2)
    3. fodd_item3(priority_order 3)
  • 饮料(priority_order 2)
    1. drink_item1(priority_order 1)
    2. drink_item2(priority_order 2)
    3. drink_item3(priority_order 3)

现在我需要示出了在数据CGridView与上述顺序完全相同。所有的食物都会排在第一位,并按优先顺序进行排序,饮料将在晚些时候出现;显然在他们的顺序。

ItemsController我想下面的代码(现在为了仅类别)

$dataProvider = new CActiveDataProvider('Items', array(
       'criteria' => array(
        'with' => array('category'), 
        'condition' => 'user_id=' . Yii::app()->user->id, 
        //'order' => 't.priority_order ASC', 
        'order' => 'category.priority_order ASC', 
       ), 
    )); 

我会很乐意提供更多的细节,如果仍然不够明确。任何帮助,将不胜感激。

+0

为什么你不只是项目进行二阶? – Rikesh 2013-05-11 13:29:05

+0

这样工作吗?不会取代一阶语句,并会按物品顺序排列数据提供者? – Preetam 2013-05-11 13:34:18

+0

不,它不会。至少有一个去。 – Rikesh 2013-05-11 13:35:21

回答

6
$dataProvider = new CActiveDataProvider('Items', array(
      'criteria' => array(
       'with' => array('category'), 
       'condition' => 'user_id=' . Yii::app()->user->id, 
       'order' => 'category.priority_order ASC, t.priority_order ASC', 
      ), 
)); 

给予第二个参数去的顺序准则应该工作

+0

这真的很容易。我正在考虑更复杂的答案,甚至没有考虑这种方式 – Preetam 2013-05-11 13:50:15