如何在yii2 queryParams中设置OR条件?

时间:2017-08-07 09:29:53

标签: php mysql sql yii2

我有这段代码

  public function actionIndex() {
    $model = new Out();
    $searchModel = new VatoutFakturOutSearch();
    if (Yii::$app->request->post('hasEditable')) {

    $userId = Yii::$app->user->id;
    $searchModel->user_id = $userId;
$searchModel->parent_id = $userId;
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    $dataProvider->pagination->pageSize = 100;

    return $this->render('index', [
                'searchModel' => $searchModel,
                'model' => $model,
                'dataProvider' => $dataProvider,
    ]);
}

actionIndex ,用于显示我的索引页面。 上面的代码会显示包含user_id==$userId AND parent_id==$userId的数据。

但这不是我需要的,我需要的是具有user_id==$userId parent_id==$userId的页面显示数据。

我该怎么做?

如何在queryParams中设置OR条件?

由于

2 个答案:

答案 0 :(得分:4)

search()方法中,只需添加andWhere()条件:

即可
$query->andWhere(['or',
        ['user_id' => $this->user_id],
        ['parent_id' => $this->user_id],
]);

或在控制器中:

$dataProvider->query->andWhere(['or',
        ['user_id' => $userId],
        ['parent_id' => $userId],
]);

答案 1 :(得分:1)

您可以使用where或operator

$dataProvider->query->andWhere(['or',
       ['user_id'=>$user_id],
       ['parent_id'=>$user_id]
   ]);