Yii - findAll with order by

时间:2014-11-17 02:33:46

标签: php yii

如何通过desc查找具有订单的特定列的所有内容?

代码bellow工作,并从开发人员ID

找到所有
$id = Yii::app()->user->getState('id');
$models = Games::model()->findAll('developer_id='.$id);

代码低于工作和订购

$models = Games::model()->findAll(array('order'=>'status'));

当我混在一起然后只适用于findAll developer_id ='。$ id不按顺序排序

$id = Yii::app()->user->getState('id');
$models = Games::model()->findAll('developer_id='.$id,array('order'=>'status'));

有任何建议要这样做吗?谢谢

4 个答案:

答案 0 :(得分:17)

在您的模型中,添加此功能:

public function scopes() {
    return array(
        'bystatus' => array('order' => 'status DESC'),
    );
}

现在您可以执行以下查询:

$models = Games::model()->bystatus()->findAll('developer_id='.$id);

=====

奖励:您还可以在模型中添加此功能:

public function bydeveloper($devId) {
    $this->getDbCriteria()->mergeWith(array(
        'condition' => 'developer_id = '.$devId,
    ));
    return $this;
}

现在您可以执行以下查询:

$models = Games::model()->bystatus()->bydeveloper($id)->findAll();

答案 1 :(得分:8)

你可以试试这个 -

$id = Yii::app()->user->getState('id');

$model = Games::model()->findAll(array("condition" => "developer_id = '".$id."'","order" => "status"));

它应该是工作

答案 2 :(得分:1)

您可以尝试使用标准:

$id = Yii::app()->user->getState('id');
$criteria=new CDbCriteria;
$criteria->compare('developer_id',$id);
$criteria->order='status DESC';

$models = Games::model()->findAll($criteria);

答案 3 :(得分:0)

这不是最好的方法,但您可以这样做:

$models = Games::model()->findAll('developer_id='.$id.' order by status DESC');