2016-09-07 3 views
1

В моем Yii2 проекта У меня есть массив, напримерYii2 Сортировка массива

$array = [];  
$array [] = 8 , 3, 6 

Так что, когда я распечатать массив

[8,3,6] 

Так что, когда я использую тот же в где заявлении Jumbles вверх.

$class = ModelClass::find()->where(['array_no' => $array])->all 

Так что, когда я распечатать класс я получаю выход в порядке Asc отсортирован .. я получаю информацию о

  • 3 в первом
  • 6 на втором месте
  • 8 на третьем месте.

Как я могу остановить это. Я хочу, чтобы они возвращали мой результат в том же порядке, что и массив

+0

http://stackoverflow.com/questions/1631723/maintaining-order-in-mysql-in-query это может быть полезным –

+0

В моем синтаксисе yii2 я не могу использовать IN даного .. –

+2

но вы можете используйте 'orderBy', как это http://stackoverflow.com/questions/28856562/order-by-field-in-yii2. Просто создайте выражение с вашим массивом и передайте его в order by statement. –

ответ

2

Вы должны использовать ORDER BY FIELD(), например. :

$models = ModelClass::find() 
    ->where(['array_no' => $array]) 
    ->orderBy(new \yii\db\Expression('FIELD (array_no, '.implode(',', $array).')')) 
    ->all(); 
+0

Да, но он меня вызывает неопределенный вызов функции, когда я использую yii/db/expression –

Смежные вопросы