如何使用where()-和where()进行yii2查询?

如何使用where()-和where()进行yii2查询?,yii2,query-builder,Yii2,Query Builder,我使用条件语句进行了一次查询 $query = Student::find() ->where('status=1'); if(isset($params['standard_id']) AND !empty($params['standard_id'])){ $query->andWhere(["standard_id"=>$params['standard_id']]);

我使用条件语句进行了一次查询

$query = Student::find()
            ->where('status=1');

            if(isset($params['standard_id']) AND !empty($params['standard_id'])){
                $query->andWhere(["standard_id"=>$params['standard_id']]);
            }
            if(isset($params['section_id']) AND !empty($params['section_id'])){
                $query->andWhere(["section_id"=>$params['section_id']]);
            }
            if(isset($params['year']) AND !empty($params['year'])){
               $query->andWhere(["year"=>$params['year']]);
            }
            //$result = $query->all();

        return $query;
Mysql

select *from student where satus=1 and standard_id=3 and section_id=1 and year=2015
如果可能,在yii2中使用where-
和where


请帮我试试这个。我不能清楚地理解你的问题。也许这对你有帮助

$model = User::find()
    ->where('satus> :satus', [':satus' => '1'])
    ->andWhere('standard_id= :standard_id', [':standard_id' => 3])
    ->andWhere('section_id= :section_id', [':section_id' => 1])
    ->andWhere('year= :year', [':year' => 2015])
    ->all();

是的,您可以同时使用
where()
andWhere()
。这将有助于您了解它是如何工作的


以上代码中的问题是什么,是的,您可以使用它。您必须首先将参数存储在变量中,然后才能应用@sarin的答案。我注意到您的
if
条件。您可以使用isset或empty。无需同时使用。请考虑使用。这样,您甚至不需要检查是否设置了变量:
Student::find()->where(['status'=>'1'])->和filterwhere(['standard\u id'=>$params['standard\u id'])
。。。