我想在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
答案 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
等等...