Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте!
В БД в таблице user_balance хранится информация о балансе пользователя.
- Модель UserBalance
- Провайдер UserBalanceProvider
- Фасад Balance для Провайдера
К примеру, у меня в хедере должна появлятся информация о балансе + где то на отдельных страницах также она появляется уже в другом месте.
Сейчас для получения баланса я пишу в blade:
Balance: {{Balance::get()}}
Сам код получения баланса такой:
function get() {
if ($this->balanceCache != null) {
return $this->balanceCache;
}
$balance = Balance::where('user_id', Auth::id())->first();
if ($balance == null) {
return $this->balanceCache = 0;
}
return $this->balanceCache = $balance->amount;
}
Так вот, я использую balanceCache, чтобы при повторном вызове Balance::get не было повторящего запроса в БД. Но мне кажется, что это как-то очень некрсиво и неправильно. Как в Laravel будет правильнее обрабатывать повторный вызов метода для получения баланса в Blade?
Не в сети
Для подобных целей используется ViewComposer. Он сам позаботиться о том чтобы не было повторных запросов. И никаких выборок в блейде вообще быть не должно.
Не в сети
Еще можно инжектить сервисы, которые будут прятать внутри себя вычисления
https://www.youtube.com/watch?v=7wsef-rLX5w
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Страницы 1