Laravel Кеш запросов разрешений - PullRequest
0 голосов
/ 11 марта 2020

Я использую Laravel Пакет разрешений (https://github.com/spatie/laravel-permission) для управления полномочиями на роль в проекте Laravel.

На каждой странице приложения я могу видеть из отладчика Laravel, что выполняются следующие два запроса. Роли и разрешения не менялись так часто, и я хочу кешировать эти запросы. Подскажите, пожалуйста, как я могу это сделать?

select `roles`.*, `model_has_roles`.`model_id` as `pivot_model_id`, `model_has_roles`.`role_id` as `pivot_role_id`, `model_has_roles`.`model_type` as `pivot_model_type` from `roles` inner join `model_has_roles` on `roles`.`id` = `model_has_roles`.`role_id` where `model_has_roles`.`model_id` = 1 and `model_has_roles`.`model_type` = 'App\Models\User'

select `permissions`.*, `model_has_permissions`.`model_id` as `pivot_model_id`, `model_has_permissions`.`permission_id` as `pivot_permission_id`, `model_has_permissions`.`model_type` as `pivot_model_type` from `permissions` inner join `model_has_permissions` on `permissions`.`id` = `model_has_permissions`.`permission_id` where `model_has_permissions`.`model_id` = 1 and `model_has_permissions`.`model_type` = 'App\Models\User'

1 Ответ

0 голосов
/ 11 марта 2020

Вы можете использовать этот пакет для кэширования вашего запроса.

Чтобы включить кэширование по заданному c запросу, вы можете сделать что-то вроде:

DB::cacheFor(now()->addHours(24))->raw('YOUR QUERY GOES HERE');
...