Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Здравствуйте, уважаемые разработчики!
Мой первый проект на Laravel, очень понравился мне этот фреймворк.
Перехожу к сути проблемы.
У меня есть User.
У User есть Transactions (один ко многим)
У User есть Tags (один ко многим)
Так же я сделал промежуточную таблицу, в которой Transactions и Tags пересекаются (многие ко многим)
Т.е. у транзакции может быть любое количество тегов, которые создал юзер. К разным транзакциям можно привязать разные теги.
Мне нужно вывести в Blade соответственно массив транзакций, в каждой транзакции должны лежать соответствующие ей теги. Я делаю это вот так
public function index()
{
$user = Auth::user();
$accounts = $user->accounts()->orderBy('created_at')->get();
$transactions = $user->transactions()->orderBy('created_at', 'desc')->get();
$tags = $user->tags()->orderBy('created_at', 'desc')->get();
foreach ($transactions as $transaction) {
$currentTags = $transaction->tags()->get();
$currentTagsData = [];
foreach ($currentTags as $currentTag) {
$tagId = $currentTag->id;
$tagName = $currentTag->name;
$tagSlug = $currentTag->slug;
$currentTagsData[] = ['id' => $tagId, 'name' => $tagName, 'slug' => $tagSlug];
}
$transaction->tags = $currentTagsData;
}
return view('cashbook', ['accounts' => $accounts, 'transactions' => $transactions, 'tags' => $tags]);
}
Вроде бы все хорошо, т.е. я транзакции попадает мой массив, хотя есть проблема - на фронтенде я него просто $transaction->tags сделать, пишет ошибку.
Может быть подскажете, правильно ли я вообще действую, ведь я получаю 9 запросов в БД при формировании страницы, не много ли это? Какие есть более продвинутые практики в такой ситуации?
Не в сети
Вопрос отменяется, все делаю правильно, просто в блейде пытаюсь вывести массив {{ $array }}, а эта конструкция по типу echo и конечно ошибка.
Не в сети
Может быть подскажете, правильно ли я вообще действую, ведь я получаю 9 запросов в БД при формировании страницы, не много ли это? Какие есть более продвинутые практики в такой ситуации?
Лучше использовать ленивую или жадную загрузку. Запросов станет в разы меньше.
Не в сети