php - Laravel 5 中的多个 where 语句

标签 php laravel-5 eloquent laravel-5.4 laravel-query-builder

我正在尝试在 laravel 5.4 中通过 ajax 实现过滤搜索结果,目前我在与其他 where 语句结合使用时遇到了 whereBetween 的问题。

我有一个查询语句如下:

    $query   = $this->hotel->query();
    $query   = $query->where(function ($query){
                    $query->orWhereBetween('min_price' , [500 , 1000]);
                    $query->orWhereBetween('min_price' , [5000 , 50000]);
                });
    $query   = $query->whereIn('internet', [1,2]);
    $query   = $query->whereIn('breakfast', [1,2]);
    $query   = $query->where('language', 'LIKE', '%'.'english'.'%');

    $hotel = $query->get();
    foreach($hotel as $h) {
        echo $h->id.'<br>';
    } exit();

上面的查询没有列出 500 到 1005000 到 50000 之间的价格结果 有两行符合上面的条件,但只返回单行.

数据库数据

id    min_price    internet    breakfast    language
4     876          2           2            english
5     40000        1           2            english 

结果: 上面的查询结果只有id 4,但应该返回id 4和5。

我想我在网上遗漏了一些东西

$query   = $query->where(function ($query){
                    $query->orWhereBetween('min_price' , [500 , 1000]);
                    $query->orWhereBetween('min_price' , [5000 , 50000]);
                });

怎样才能得到正确的结果?请帮忙。

最佳答案

不确定您的要求,但您可能需要安排您的条件,例如

$query   = $query->orWhere(function ($q){ //assuming b/w is not mandatory
                    $q->whereBetween('min_price' , [500 , 1000]); // removed OR from here
                    $q->orWhereBetween('min_price' , [5000 , 50000]);
                });

关于php - Laravel 5 中的多个 where 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48556939/

相关文章:

laravel ->count() 与 ->get()->count()

php - 使用 postgresql 按字母数字顺序对数据进行排序

htmlspecialchars() 期望参数 1 是给定的字符串数组

mysql - ELOQUENT 使用 save() 更新数据库;

mysql - Eloquent 外键

php - Laravel 捕获 TokenMismatchException

php - 将 HTML 文本转换为 Leet (1337) Speak with XPath

php - Yii2 将文件保存到 Oracle BLOB

php - 获取一周前的 DateTime

php - 表单验证异常未被 laravel 5.1 中的异常捕获?