我制作了一个范围,但不知何故最终陷入无限循环。在将其简化为最小的可重现示例时,我得出了以下结论:
public function apply(Builder $builder, Model $model)
{
Log::info('[Search] SQL: ' . $builder->toSql() . " Bindings: " . implode(', ', $builder->getBindings()));
}
范围以标准方式在模型中实现:
protected static function booted()
{
static::addGlobalScope(new AuthorizationScope());
}
如果我像这样运行代码,最终会出现以下错误:
已达到最大函数嵌套级别“256”,正在中止!
为什么无法在范围本身内获取 SQL 转储?这可以以某种方式修改吗?在其他地方启用数据库查询日志之类的选项实际上并不是这个问题的一部分。
拉莫斯之舞