Laravel碳检索记录,即使它不应该';T

Laravel碳检索记录,即使它不应该';T,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我正在按开始日期和结束日期或工作日进行搜索,哪种工作方式很好。但是,如果工作日等于“WE”,而今天的工作日等于“WE”,即使$today date“SU”, 1=>“MO”, 2=>“TU”, 3=>“我们”, 4=>“TH”, 5=>“FR”, 6=>“SA”, ]; $todayWeek=Carbon::now()->dayOfWeek; $today=碳::now(); $weekday=$weekMap[$todayWeek]; $event=event::with('business'

我正在按开始日期和结束日期或工作日进行搜索,哪种工作方式很好。但是,如果工作日等于“WE”,而今天的工作日等于“WE”,即使$today date
public function show($id)
{   
    $weekMap = [
        0 => 'SU',
        1 => 'MO',
        2 => 'TU',
        3 => 'WE',
        4 => 'TH',
        5 => 'FR',
        6 => 'SA',
    ];
    $todayWeek = Carbon::now()->dayOfWeek;
    $today= Carbon::now();
    $weekday = $weekMap[$todayWeek];
    $event = Event::with('businesses')
       ->where('startdate', '<', $today->format('Y-m-d'))
       ->where('endate', '>', $today->format('Y-m-d'))
       ->orWhere('weekday', '=', $weekday)
       ->get();
    dd($event);
    return view('events.showEvent', compact('event'));
}
公共功能显示($id)
{   
$weekMap=[
0=>“SU”,
1=>“MO”,
2=>“TU”,
3=>“我们”,
4=>“TH”,
5=>“FR”,
6=>“SA”,
];
$todayWeek=Carbon::now()->dayOfWeek;
$today=碳::now();
$weekday=$weekMap[$todayWeek];
$event=event::with('business')
->其中('startdate',''$today->格式('Y-m-d'))
->或其中('weekday','=',$weekday)
->get();
dd($事件);
返回视图('events.showEvent',压缩('event');
}
若我把where改为where,结果都很好,但用户并不总是输入一个工作日,所以它可以是空的。我希望它能像这样工作:

$query = Event::with('businesses')
   ->where('startdate', '<', $today->format('Y-m-d'))
   ->where('endate', '>', $today->format('Y-m-d'));

   if ($weekday != '') {
       $query->where('weekday', $weekday);
   }

   $event = $query->get();
在startdatetoday的位置输出所有内容,如果工作日不为空,则在startdatetoday和weekday=$weekday的位置输出所有内容。我希望这是有道理的

//编辑

样本数据:

所以我想要的是真正的频率搜索,所以它看起来是这样的:

$query = Event::with('businesses')
   ->where('startdate', '<', $today->format('Y-m-d'))
   ->where('endate', '>', $today->format('Y-m-d'));

   if ($weekday != '') {
       $query->where('weekday', $weekday);
   }

   $event = $query->get();
如果频率=每天 将开始和结束与今天的日期进行比较。 如果频率=每周 将开始和结束与今天的日期和工作日进行比较


返回频率=每日+每周的所有结果

您可以在以下查询中使用if条件:

$query = Event::with('businesses')
   ->where('startdate', '<', $today->format('Y-m-d'))
   ->where('endate', '>', $today->format('Y-m-d'));

   if ($weekday != '') {
       $query->where('weekday', $weekday);
   }

   $event = $query->get();
$query=Event::with('businesss')
->其中('startdate',''$today->格式('Y-m-d');
如果($weekday!=''){
$query->where('weekday',$weekday);
}
$event=$query->get();

条件
如果($weekday!='')
检查
$weekday
是否设置您可以使用


如果(!is_null($weekday))
则改为您可以在如下查询中使用if条件:

$query = Event::with('businesses')
   ->where('startdate', '<', $today->format('Y-m-d'))
   ->where('endate', '>', $today->format('Y-m-d'));

   if ($weekday != '') {
       $query->where('weekday', $weekday);
   }

   $event = $query->get();
$query=Event::with('businesss')
->其中('startdate',''$today->格式('Y-m-d');
如果($weekday!=''){
$query->where('weekday',$weekday);
}
$event=$query->get();

条件
如果($weekday!='')
检查
$weekday
是否设置您可以使用


如果(!is_null($weekday))
相反,问题是此代码只返回1个结果,其中weekday='WE'该部分是正确的,但是它不会返回与开始和结束日期匹配但不包含$weekday的结果。$weekday始终有一个值,因为它'设置为碳,它必须匹配的是在哪里('weekday')所以匹配数据库中的'weekday',如果它不是空的,则运行where语句,这样它就必须匹配if(!empty($event->weekday)之类的内容但是它一直给我一个错误,集合是空的。你能编辑你的问题并放置示例表数据,然后告诉我你想要得到什么吗?问题是,这段代码只返回一个结果,其中weekday='WE'该部分是正确的,但是它不会返回与开始和结束日期匹配的结果,但不包含$weekday$wweekday总是有一个值,因为它被设置为carbon,它必须匹配的是where('weekday'),所以匹配数据库中的'weekday',如果它不是空的,则运行where语句,这样它就必须匹配if(!empty($event->weekday)之类的内容但它总是给我一个错误,集合是空的。你能编辑你的问题,把样本表数据放进去,告诉我你想要什么吗?