0

我有一个数组,$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_arrayvalue 是 table 的 id(主键)form_fields

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

现在我想要的订单是 3,1,6(正好是$sorted_array)。我怎样才能$first_array按这个顺序?

4

1 回答 1

1

您可以使用 ->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();
于 2016-01-18T13:35:10.567 回答