Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel全球用户范围导致;“最大功能嵌套级别”;错误_Php_Laravel - Fatal编程技术网

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);
    }