Yii - findAll with order by

The*_*ile 3 php yii

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

代码bellow工作,并从开发人员ID找到所有

$id = Yii::app()->user->getState('id');
$models = Games::model()->findAll('developer_id='.$id);
Run Code Online (Sandbox Code Playgroud)

代码波纹管工作和订购

$models = Games::model()->findAll(array('order'=>'status'));
Run Code Online (Sandbox Code Playgroud)

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

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

有什么建议吗?谢谢

Sam*_*iew 17

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

public function scopes() {
    return array(
        'bystatus' => array('order' => 'status DESC'),
    );
}
Run Code Online (Sandbox Code Playgroud)

现在你可以像这样进行查询:

$models = Games::model()->bystatus()->findAll('developer_id='.$id);
Run Code Online (Sandbox Code Playgroud)

=====

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

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

现在你可以像这样进行查询:

$models = Games::model()->bystatus()->bydeveloper($id)->findAll();
Run Code Online (Sandbox Code Playgroud)

  • @WadeShuler这是一个关于Yii 1的问题,并在几年前发布.答案在其背景下没有错.较新的问题标记为"yii2".你的downvote是不必要的. (2认同)

小智 8

你可以尝试这个 -

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

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

它应该是工作