在Laravel中注册新的全球范围

时间:2018-11-28 06:55:03

标签: php laravel laravel-5 laravel-5.7 global-scope

我想在Laravel 5.7中注册一个新的全局范围,但出现以下错误:

  

Symfony \组件\调试\异常\ FatalThrowableError   (E_PARSE)        语法错误,意外的“静态”(T_STATIC)

<?php

namespace App;

use Auth;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Order extends Model
{
    use SoftDeletes;

    /**
    * Anonymous scope
    */
    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope('authenticated', function (Builder $builder) {
            $builder->where('id_user', '=', Auth::id());
        });
    }
}

我正在使用laravel 5.7 PHP 7.2

3 个答案:

答案 0 :(得分:1)

5.7中的全局作用域文档建议您实施它们的方式应与在此处使用的方式有所不同。 https://laravel.com/docs/5.7/eloquent#global-scopes

您需要实现Scope类,然后创建一个apply()方法。

答案 1 :(得分:0)

您正在尝试添加一个绝对不错的匿名全局范围,但是您需要使用Eloquent \ Builder来工作(这种方法似乎不适合您的确切错误,但是,您将需要此方法),所以添加在您的课上讲以下内容,看看错误是否改变!

use Illuminate\Database\Eloquent\Builder;

答案 2 :(得分:0)

使用这个包生成全局作用域并将其加载到 Laravel 中

https://github.com/limewell/laravel-make-extender

php artisan make:scope UserScope

php artisan make:scope ActiveScope

php artisan make:scope AgeScope

等等...