OctoberCMS / Анонимный Глобальный охват

#php #laravel #octobercms #octobercms-plugins

Вопрос:

Я использую OctoberCMS Rainlab.Пользовательский плагин для управления аутентификацией.

У меня есть различные модели, и они принадлежат пользователю.

Как настроить анонимную глобальную область для каждой модели, чтобы возвращать только записи, принадлежащие аутентифицированному пользователю?

Заранее большое спасибо за любую помощь.

 use Auth;

protected static function booted()
    {
        $user = Auth::getUser();
        static::addGlobalScope('user_id', function (Builder $builder){
        $builder->where('user_id', $user);
      });
    }
 

Ответ №1:

Я бы создал динамическую область на странице определения модели. Вы можете прочитать больше об этом здесь.

 class PluginModel extends Model
{
    /**
     * Scope a query to only records with user.
     */
    public function scopeGetUserRecords($query, $userId)
    {
        return $query->where('user_id', $userId);
    }
}
 

Теперь каждый раз, когда вы вызываете свой класс PluginModel, вы можете просто сделать это:

 $userRecords = PluginModel::getUserRecords($user->id)->get();