Зарегистрируйте новый глобальный охват в Laravel
Я хочу зарегистрировать новую глобальную область в Laravel 5.7, но я получил следующую ошибку:
Синтаксическая ошибка Symfony \ Component \ Debug \ Exception \ 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 ответа
Вы пытаетесь добавить анонимную глобальную область, что совершенно нормально, но вам нужно использовать Eloquent\Builder для этого подхода к работе (это, кажется, не соответствует вашей точной ошибке, однако вам понадобится это), поэтому добавьте следующее в ваш класс и посмотреть, если ошибка изменится!!
use Illuminate\Database\Eloquent\Builder;
Документы по глобальным областям действия в 5.7 предполагают, что вы должны реализовывать их не так, как здесь. https://laravel.com/docs/5.7/eloquent.
Вам необходимо реализовать Scope
класс, а затем создать apply()
метод.
Используйте этот пакет для создания и загрузки глобальных областей в laravel
https://github.com/limewell/laravel-make-extender
php artisan make:scope UserScope
php artisan make:scope ActiveScope
php artisan make:scope AgeScope
так далее...