如何订购查询

时间:2016-01-18 12:23:26

标签: php mysql arrays yii yii1.x

我有一个数组$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

1 个答案:

答案 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();