2015-01-21 46 views
0

有没有什么办法用ORDER BY FIELD()特性创建CDbCriteria实例?Yii ORDER BY字段()在CDbCriteria

柱是glncrna_id,ID_LIST: 'GlncRNA10003d', 'GlncRNA10027d', 'GlncRNA20024d'

$criteria1->order = "FIELD(glncrna_id, 'GlncRNA10003d', 'GlncRNA10027d', 'GlncRNA20024d')"; 

$criteria1->order = "FIELD('glncrna_id', GlncRNA10003d, GlncRNA10027d, GlncRNA20024d)"; 

$criteria1->order = "FIELD('glncrna_id', 'GlncRNA10003d, GlncRNA10027d, GlncRNA20024d')"; 

示出了常规错误:1没有这样的功能:FIELD

$criteria1->order = "FIELD(glncrna_id, GlncRNA10003d, GlncRNA10027d, GlncRNA20024d)"; 

显示不是GlncRNA10003d列

如何在id_list中命令结果?我使用的SQLite数据库

+0

你可以通过https://github.com/yiisoft/yii2来使用Cshort不同的顺序使用/问题/ 553? – TNC 2015-01-21 07:40:50

+0

$ criteria-> order =“FIELD(name,'Mobile','Utilities')DESC”;对我来说工作得很好。我正在使用MySql。你正在使用哪个数据库? – 2015-01-21 08:39:42

+0

我使用sqlite数据库@AlexJose – AntiGMO 2015-01-21 13:39:13

回答

1

试试这个:

$criteria1=new CDbCriteria; <br/> 
$criteria1->order="FIELD(glncrna_id,'GlncRNA10003d','GlncRNA10027d','GlncRNA20024d') DESC"; 
+0

谢谢,我试了一下,仍然没有显示这样的功能FIELD – AntiGMO 2015-01-21 06:56:15

+0

还是没有工作,没有sunch功能FIELD @Luke – AntiGMO 2015-01-21 07:41:21

+1

@JesseSiu我所做的只是编辑帖子,没有更多。 – Luke 2015-01-21 07:42:25

0

你必须

 $sort = new CSort(); 
     //this should be default order 
     $sort->defaultOrder = 't.glncrna_id DESC'; 
     $sort->attributes = array(
      'GlncRNA10003d' => array(
       'asc' => 'GlncRNA10003d asc', 
       'desc' => 'GlncRNA10003d desc' 
      ), 
      'GlncRNA10027d' => array(
       'asc' => 'GlncRNA10003d asc', 
       'desc' => 'GlncRNA10027d desc' 
      ), 
     ); 

     $dataProvider = new CActiveDataProvider('ModelName', array(
      'criteria' => $criteria, 
      'sort' => $sort 
     ));