如何订购查询

How to Order a query

我有一个数组 $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 值是 table form_fields.

的 id(主键)

当我 运行 这个查询时,我得到数组 $first_array 但不是我想要的顺序。即,我将按顺序获得一个数组 $id=1,3,6.

现在我想要的顺序是 3,1,6(与 $sorted_array 完全一样)。我怎样才能按顺序得到 $first_array

您可以使用 ->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();

此 returns 所有行使用指定的 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();