Php Laravel全球用户范围导致;“最大功能嵌套级别”;错误
我目前有几个用户角色:Php Laravel全球用户范围导致;“最大功能嵌套级别”;错误,php,laravel,Php,Laravel,我目前有几个用户角色: 管理员 所有者 经理 我还有一个叫做公司的模型。所有其他型号(包括用户型号)都有公司id属性。我想创建一个全局作用域,该作用域将所有内容都作用于公司id,具有管理员角色的用户除外。管理员应该能够看到所有的东西,不管模型是为哪家公司设计的 在访问我的应用程序中的任何页面时,我遇到以下错误: 已达到最大函数嵌套级别“256”,正在中止 以下是我的范围代码: <?php namespace App\Scopes; use Illuminate\Database\E
- 管理员
- 所有者
- 经理
公司
的模型。所有其他型号(包括用户
型号)都有公司id
属性。我想创建一个全局作用域,该作用域将所有内容都作用于公司id
,具有管理员
角色的用户除外。管理员应该能够看到所有的东西,不管模型是为哪家公司设计的
在访问我的应用程序中的任何页面时,我遇到以下错误:
已达到最大函数嵌套级别“256”,正在中止
以下是我的范围代码:
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class CompanyScope implements Scope
{
public function apply(Builder $builder, Model $model)
{
if (auth()->check() && auth()->user()->role != 'Admin') {
$builder->where('company_id', auth()->user()->company_id);
}
}
}
我通过将条件语句移动到boot
方法中而不是在scope类中解决了这个问题:
if (auth()->check() && auth()->user()->role != 'Admin') {
static::addGlobalScope(new CompanyScope);
}
我通过将条件语句移动到boot
方法中而不是在scope类中解决了这个问题:
if (auth()->check() && auth()->user()->role != 'Admin') {
static::addGlobalScope(new CompanyScope);
}
if (auth()->check() && auth()->user()->role != 'Admin') {
static::addGlobalScope(new CompanyScope);
}