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

This work perfect:

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

}

Call in Controller: It Works!

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

When I add another Query Scope like so:

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

OR:

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

Then call in the controller:

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

I get an error: Undefined variable: event. I tried with with Raw MySql in the same model and it works. Whenever i add a query scope, does not matter what it is.. i get that same error Undefined variable: event.

NOW() is a function, so you need to use a raw query:

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

Then you can use the scopes. (Do note that I think scopeDate must be called as date(), not Date() - not 100 % sure on that though.)

This sounds less like a generic problem with Laravel, and more like a problem with you specific application.

My guess (which is a wild guess), is that adding that second where clause in your scope method

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

ended up creating a SQL query that returned 0 rows. Then, somewhere in your other code you're doing something like

foreach($events as $event)
{
    //...
}

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

As I said, this is a wild guess, but the problem doesn't seem to be your query code, the problem seems to be the rest of your code that relies on the query returning a certain number of, or certain specific, rows/objects.