laravelで作成中のアプリで、「todos」「category」「file_path(todosに関する画像)」というを使ってレコードを記録しています。
index.blade.phpで@foreachループをする時のために、上記3つのテーブルの情報を1つの連想配列にしたいです。
リレーションは貼ってあるので、2テーブルまでならwithメソッドを使って1つにまとめられるのですが、
3テーブルとなるとどうすればいいのか分からず、悩んでいます。
・やったこと
スマートではないですが・・・DB構成を変更しtodosテーブルにfile_pathカラムを作成して対応してます(filesテーブルがいらなくなるので、todosとcategoryの2テーブル参照(with)で済ませられる)。
しかし、今後indexページに「各todosレコードに対して送られたメッセージの数を表示する」といったことをしたくなった時のためにwithメソッド以外で1つの配列にレコード情報をまとめる方法をアドバイスいただけるととても助かります。
追記:アドバイスいただいたJOINで以下のように書いて解決しました。
$todos = DB::table('todos') ->join('categories', 'todos.id', '=', 'categories.todo_id') ->join('files', 'todos.id', '=', 'files.todo_id') ->select('todos.*', 'categories.name', 'files.file_path') ->get();
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/26 16:11
2019/12/26 16:18