Как заказать запрос

У меня есть массив $sorted_array его ценность

Array ( [0] => 3 [1] => 1 [2] => 6 )

Теперь на основе $ sorted_array я создал массив

$first_array = Yii::app()->db->createCommand()
->select('*')
->from('form_fields')
->where(array('not in', 'id', $sorted_array))
->andWhere('form_id=:form_id', array(':form_id'=>$form_id))
->queryAll();

$sorted_array значение — это идентификатор (первичный ключ) таблицы form_fields,

Когда я запускаю этот запрос, я получаю массив $first_array но не в том порядке, в котором я этого хочу. т.е. я получу массив в порядке $ id = 1,3,6.

Теперь мой разыскиваемый заказ составляет 3,1,6 $sorted_array). Как я могу получить $first_array в этой последовательности?

0

Решение

Вы можете использовать -> order () Добавить order (‘id’) в ваш код следующим образом:

 $first_array = Yii::app()->db->createCommand()
->select('*')
->from('form_fields')
->where(array('not in', 'id', $sorted_array))
->andWhere('form_id=:form_id', array(':form_id'=>$form_id))
->order('id')
->queryAll();

в противном случае, если нет возможности создать нужный запрос с помощью построителя запросов, вы можете использовать

Yii::app()->db->createCommand("select * from your_table")->queryAll();

и для обязательного параметра

Yii::app()->db->createCommand(
'select * from your_table  where yuor_field =:your_param')->
bindValue('your_param',$yuor_value)->queryAll();

это возвращает все строки, используя указанный оператор SQL

$sql = "select * from form_fields
where id not in (3,1,6)
and form_id = " . $form_id .
"order by field(id, 3,6,1);";

$first_array = Yii::app()->db->createCommand($sql)->queryAll();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]