在Yii2中使用和在IF条件下

时间:2016-02-19 11:47:11

标签: php yii yii2 yii2-model

只是一个简单的问题。 我需要在Yii2中创建一个查询查询,其中只有当变量为真时才存在。

public function getCheckBoxItems($holiday=false)
{
    $Items = Items::find()->where(['type'=>'checkbox']);
    Yii::info(print_r($Items,1), 'c');

    if($holiday)
        $Items->andWhere(['<>','category','holiday']);

    $Items->All();
    foreach($Items as $Item)
    {
        //do something
    }
}

这不起作用

然而,这个deos工作,我期待它。

$Items = Items::find()->where(['type'=>'checkbox'])->andWhere(['<>','category','holiday'])->All();

如何仅根据$holiday变量

添加andWhere

提前致谢

此致

利安

更新 我找到了一种方法,但我确信有更好的方法

    if($holiday)
        $Items = Items::find()->where(['type'=>'checkbox'])->andWhere(['<>','category','holiday'])->All();
    else            
        $Items = Items::find()->where(['type'=>'checkbox'])->All();

2 个答案:

答案 0 :(得分:6)

只是为了使您的代码更清晰易读,您应该尝试:

$itemsQuery = Items::find()->where(['type'=>'checkbox']);

if($holiday)
    $itemsQuery->andWhere(['<>','category','holiday']);

$items = $itemsQuery->all();
foreach($items as $item)
{
    //do something
}

答案 1 :(得分:2)

您必须在每个检查点存储$items结果:

public function getCheckBoxItems($holiday=false)
{
$Items = Items::find()->where(['type'=>'checkbox']);
Yii::info(print_r($Items,1), 'c');

if($holiday)
    $Items->andWhere(['<>','category','holiday']);

$Items = $Items->All();
foreach($Items as $Item)
{
    //do something
}
}