Зарегистрируйте новый глобальный охват в 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

0

Решение

Вы пытаетесь добавить анонимную глобальную область, что совершенно нормально, но вам нужно использовать Eloquent \ Builder для этого подхода к работе (это, похоже, не подходит под вашу точную ошибку, однако вам это понадобится), поэтому добавьте следующее в ваш класс и посмотреть, если ошибка изменится !!

use Illuminate\Database\Eloquent\Builder;
0

Другие решения

Документы по глобальным областям действия в 5.7 предполагают, что вы должны реализовывать их не так, как здесь. https://laravel.com/docs/5.7/eloquent#global-scopes.

Вам необходимо реализовать Scope класс, а затем создать apply() метод.

1

По вопросам рекламы [email protected]