2024-07-23Laravelを使って、子、孫を含めた3つのテーブルからid(主キー)が一致するデータを取得(Eloquentリレーション、ネスト)し、一覧ページで表示する方法をご紹介します。以下の3つのテーブルを用意しました。listpagesテーブルから商品を登録したユーザーが登録されてるusersテーブル(子)。usersテーブルに登録されてる都道府県id(todofuken_id)と一致するtodofukensテーブル(孫)の都道府県名(prefecture)を表示させます。都道府県ID=todofukensテーブルのid※todofukensテーブルのテーブル名から「s」を除いた名前「todofuken」とtodofukensテーブルの主キー「id」にアンダーバー「_」を付けた名前「todofuken_id」にする必要があります。することでtodofukensテーブルからidが一致したデータを取得することができます。商品登録ユーザーID=usersテーブルのid※usersテーブルのテーブル名から「s」を除いた名前「user」とusersテーブルの主キー「id」にアンダーバー「_」を付けた名前「user_id」にする必要があります。することでusersテーブルからidが一致したデータを取得することができます。※ListpageモデルにUserモデル、Todofukenモデルのデータを取得する記述をします。※listpagesテーブルのuser_idと一致するusersテーブルからidとnameを取得します。usersテーブルのtodofuken_idと一致するtodofukensテーブルからidとprefectureを取得します。with([‘user:id,name’,’user.todofuken:id,prefecture’])を使うことでusersテーブルから取得したいカラムのデータを指定し、usersテーブルにネストしたtodofukensテーブルの取得したいカラム(id,prefecture)を指定して取得します。$request->order;//listpagesテーブルのuser_idと一致するusersテーブルからidとnameを取得します。※ページURLは必要に応じて変更して下さい。'ListpagesController@listdata');※流用される場合は自己責任でお願いします。