获取一个数据集合,并通过开始和结束日期来限制它们。

我有一个SpecialPrice模型,它根据start_date & end_date列来保存数据,就像下面的屏幕一样

enter image description here

我想实现的是以下几点。

  1. 如果用户选择日期从2020-04-23到2020-04-26,我应该只检索第一个对象,但如果用户选择日期从2020-04-23到2020-04-27,我应该只检索第一个& 第二个对象。
  2. 但如果用户选择日期从2020-04-23到2020-04-27,我应该只检索第一个对象& 第二个对象。
  3. 但如果用户选择的日期从2020-04-23到2020-05-01,我应该检索三个对象等。

在我的模型中,我有scoped函数,我试过了,但是我知道它有一些问题。

public function scopeBetweenDates($query,$start_date , $end_date){
    return $query->whereRaw('? between start_date and end_date', [$start_date])
                ->orWhereRaw('? between start_date and end_date', [$end_date]);
}

先谢谢

解决方案:

这对我来说是可行的

public function scopeWhereIntersectsStartDate($query,$start_date){

    return  $query->whereNotNull('start_date')
                  ->where('start_date' , '>' , $start_date)
                  ->orWhere('end_date' , '>' , $start_date);
}

public function scopeWhereIntersectsEndDate($query,$end_date){

    return  $query->whereNotNull('end_date')
                  ->where('end_date' , '<' , $end_date)
                  ->orWhere('start_date' , '<' , $end_date);
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

在SQL中运行Sum查询时遇到困难

2022-9-8 4:35:26

未分类

npm安装被卡住

2022-9-8 4:46:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索