首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >whereBetween和orWhere用于获取日期范围内的数据

whereBetween和orWhere用于获取日期范围内的数据
EN

Stack Overflow用户
提问于 2018-05-11 06:50:05
回答 2查看 902关注 0票数 1

我想得到日期范围created_at这里是我的示例表

代码语言:javascript
运行
复制
id    status  created_at
1      1      2018-05-10 10:53:54
2      2      2018-05-10 10:53:54
3      2      2018-05-9 11:53:54

在我的控制器里

代码语言:javascript
运行
复制
$this->to = 2018-05-10;
$this->from = 2018-05-09;
Table::whereBetween('created_at', [$this->from, $this->to]) 
                            ->orwhere('created_at', 'like', '%' .$this->to. '%')
                            ->where('status', 2); 

在这个查询中,它打印状态为1和2的所有数据,如何只获得status2

我尝试die_dump我的sql我得到了这样的查询

代码语言:javascript
运行
复制
select * from `table` where `created_at` between '2018-05-09' and '2018-05-10' or `created_at` like '%2018-05-10%' and `status` = '2'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-11 06:57:10

您可以尝试对whereBetween('created_at', [$this->from, $this->to])->orwhere('created_at', 'like', '%' .$this->to. '%')进行子查询

代码语言:javascript
运行
复制
$from = $this->from;
$to = $this->to;
Table::where('status', 2)
            ->where(function ($query) use ($from,$to) {
                    $query->whereBetween('created_at', [$from, $to])
                                ->orwhere('created_at', 'like', '%' .$to. '%');
            });
票数 3
EN

Stack Overflow用户

发布于 2018-05-11 06:59:06

代码语言:javascript
运行
复制
 Table::where(function($q) use ($from,$to)){
      $q->whereBetween('created_at', [$from, $to])
        ->orwhere('created_at', 'like', '%' .$to. '%')
    }->where('status', 2);

您可以搜索“嵌套/子查询雄辩的laravel”以获得更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50286588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档