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

时间:2017-07-05 12:12:12

标签: laravel laravel-5 eloquent

我在开始和结束日期或工作日搜索,但是如果工作日等于'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'));
}

如果我改变或者在哪里,结果都是好的,但是用户并不总是进入工作日,所以它可以是空的。我希望它能像这样工作:

输出startdate&lt;的所有内容今天和哪里结束&gt;今天如果工作日不为空,输出startdate&lt;今天,结束&gt;今天和工作日= $工作日。我希望这是有道理的。

//修改

示例数据:

data

所以我想要的是按频率搜索所以它看起来像这样:

如果频率=每日 将开始和结束与今天的日期进行比较。 如果频率=每周 将开始和结束与今天的日期和工作日进行比较。

带回频率=每日+每周

的所有结果

1 个答案:

答案 0 :(得分:0)

您可以在查询中使用if条件,如下所示:

Thumb

条件ListView检查$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 ($weekday != '')而不是