我有一个数组$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
的ID(主键)。
当我运行此查询时,我得到数组$first_array
但不按我想要的顺序。即,我将按顺序$ id = 1,3,6得到一个数组。
现在我想要的订单是3,1,6(完全是$sorted_array
)。我怎样才能按顺序获得$first_array
?
答案 0 :(得分:1)
您可以使用 - > 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();