У меня есть массив $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
в этой последовательности?
Вы можете использовать -> 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();
Других решений пока нет …