未定义的变量多查询范围 Laravel

Undefined Variable Multiple Query Scopes Laravel

这项工作完美:

public function scopeHBO($query)
{
    return $query ->where('network', '=', "hbo");

}

在控制器中调用:有效!

$events = Schedule::HBO()->orderBy('searchdate')->get();

当我像这样添加另一个查询范围时:

 public function scopeHBO($query)
{
    return $query
            ->where('network', '=', "hbo")
            ->where('searchdate', '>=', 'NOW()');
}

或:

public function scopeDate($query)
{
    return $query->where('searchdate', '>= ', 'NOW()');
}

然后在controller中调用:

$events = Schedule::HBO()->Date()->orderBy('searchdate')->get();

我收到一个错误:未定义的变量:事件。我在同一模型中尝试使用 Raw MySql 并且它有效。每当我添加查询范围时,无论它是什么,我都会收到同样的错误 Undefined variable: event.

NOW() 是一个函数,所以你需要使用原始查询:

where('searchdate', '>=', DB::raw('NOW()'))

那你就可以使用示波器了。 (请注意,我认为 scopeDate 必须被称为 date(),而不是 Date() - 虽然不是 100% 确定。)

这听起来不太像是 Laravel 的一般问题,而更像是您的特定应用程序的问题。

我的猜测(这是一个大胆的猜测)是在你的范围方法中添加第二个 where 子句

return $query
        ->where('network', '=', "hbo")
        ->where('searchdate', '>=', 'NOW()');

最终创建了一个返回 0 行的 SQL 查询。然后,在你的其他代码的某个地方,你正在做类似

的事情
foreach($events as $event)
{
    //...
}

//referencing final $event outside of loop
if($event) { ... }

正如我所说,这是一个大胆的猜测,但问题似乎不是您的查询代码,问题似乎是您的其余代码依赖于返回一定数量的查询,或者某些具体的,rows/objects.