未定义的变量多查询范围 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.
这项工作完美:
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.