2015-01-21 3 views
0

Есть ли способ создать экземпляр CDbCriteria с функцией ORDER BY FIELD()?Yii ORDER BY FIELD() в 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/issues/553? – TNC

+0

$ criteria-> order = "FIELD (имя, 'Mobile', 'Utilities') DESC"; отлично работает для меня. Я использую MySql. Какая база данных вы используете? –

+0

Я использую базу данных sqlite @AlexJose – AntiGMO

ответ

1

Попробуйте это:

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

Спасибо, я пробовал, все еще не показывает такую ​​функцию FIELD – AntiGMO

+0

еще не работает, нет функции sunch FIELD @Luke – AntiGMO

+1

@JesseSiu Все, что я сделал, это редактировать сообщение, не более того. – Luke

0

Вы должны использовать Cshort для использования различного порядка по

 $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 
     )); 
Смежные вопросы