Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 6/7/8/9/10 » Как правильно работать с промежуточными таблицами? » 11.11.2019 08:17:16

Вопрос отменяется, все делаю правильно, просто в блейде пытаюсь вывести массив {{ $array }}, а эта конструкция по типу echo и конечно ошибка.

#2 Laravel 6/7/8/9/10 » Как правильно работать с промежуточными таблицами? » 08.11.2019 10:39:11

ArtemkaYa
Ответов: 2

Здравствуйте, уважаемые разработчики!

Мой первый проект на 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 запросов в БД при формировании страницы, не много ли это? Какие есть более продвинутые практики в такой ситуации?

Подвал раздела