Выбрать реляционный объект из кеша - PullRequest
0 голосов
/ 13 ноября 2018

Ниже приведен код, который выбирает пользователей и реляционный объект роли для каждого пользователя.

$query = (new UserModel())->newQuery();
$query->with("Role");
$data = $query->get(["UserName", "EmailAddress", "User_ID"]);

У меня есть 3 роли в базе данных, и они находятся в кеше. Есть ли способ изменить эту строку кода: $query->with("Role");, чтобы при каждом извлечении пользователей не требовалось извлекать роли из базы данных.

1 Ответ

0 голосов
/ 13 ноября 2018

Может быть, вы можете подключиться к событию Retrieved из Eloquent. При извлечении модели из базы данных вы можете получить роль из кэша и установить ее для модели. Возможно, это может быть решением для вас?

Посмотрите Документы Laravel о красноречивых событиях здесь: https://laravel.com/docs/5.6/eloquent#events

Возможно, это сработает для вас, добавьте это в класс вашей модели:

/**
 * Boot the model.
 */
protected static function boot()
{
    parent::boot();
    static::retrieving(function ($user) {
        $user->fetchFromCache("Role"); //replace this line with however you could fetch it from the cache
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...