Laravel`或Where()`函数

时间:2014-11-17 20:09:41

标签: database laravel query-builder

我正在构建一个查询,我希望得到以下内容:

SELECT * FROM table WHERE color ='white'OR color ='red'

此颜色是一个过滤器,根据客户的选择,它会添加红色或白色滤色器,甚至更多颜色。

所以我测试了:

    if(isset($input['filter']['color'])) {
        $query->where(function($where) use ($input) {
            foreach($input['filter']['color'] as $color) {
                $where->where('color', array($color));
            }
        });
    }

但结果是:

SELECT * FROM table WHERE(color ='white'AND color ='red')

任何人怎能告诉我如何解决这个问题?我测试了一些东西,但我没有得到我想要的结果。颜色只是在过滤器上,有更多的过滤选项。

例如,过滤器查询可能如下所示:

SELECT * FROM table WHERE(color ='white'OR color ='red')AND(used ='Y')AND(size = 1 OR size = 2)等。

欧文

1 个答案:

答案 0 :(得分:3)

使用orWhere过滤器:

if (isset($input['filter']['color'])) {
    $query->where(function ($query) use ($input) {
        foreach ($input['filter']['color'] as $color) {
            $query->orWhere('color', $color);
        }
    });
}

或者只使用whereIn

if (isset($input['filter']['color'])) {
    $query->whereIn('color', $input['filter']['color']);
}