2021.06.18LaravelのEloqunetでリレーションを作る方法をまとめてみました。Laravelのバージョン8で挙動を確認しています。モデルから関連するモデルにリレーションを作成しておくと、簡単に関連先のデータを取得することが可能です。複雑な条件などが不要な場合は、クエリビルダーでJoinを使わずにこちらで取得すると良いかと思います。公式のこちらの内容をわかりやすくしてみました。今回はこちらの中から、hasOneとhasManyをピックアップして記事にしています。今回リレーションを試してみるために作成したテーブル構成は下記です。掲示板のアプリケーションを考えたときのテーブルになります。Boardsが掲示板で、Messagesが返信です。varchar(255)1対1でリレーションする(hasOneを使用する)モデルにhasOneを書くことで、引数で渡したクラスのモデルを1つだけ返してくれます。}}引数で渡したモデルには、呼び出し元のidを持っている必要があります。今回の例で言うと、board_idをmessagesが持っているため取得できます。‘_id’]カラムがリレーションで使うカラムとして自動的に選択されます。hasOneで、ひとつのデータを取得するリレーションを作った先のモデルを取得する時は、親のモデルをひとつ取得し、そこからメソッドを呼びます。下記のように書くことで、BoardからMessageをひとつ取得します。Board::find(1)->messageddで確認すると、このように表示されます。関連するmessagesテーブルのモデルが1件返ってきているのが確認できました。-----}リレーション先のデータが存在しない場合は結果がnullになります。1対Nでリレーションする(hasManyを使用する)モデルにhasManyを書くことで、引数で渡したクラスのモデルを複数返してくれます。}}hasOneと同じで、messagesがboard_idを持っているため、このように書くことが可能です。hasManyで、複数のデータを取得する使用するときは、下記のように呼び出すと複数取得することができます。Board::find(1)->messages取得した結果を出力すると、下記のようにコレクションの中にモデルが複数入って返ってきていることが確認できます。hasManyでキーが違う場合はどうする?Eloquentでは、呼び出し元のテーブル名に基づいて、キーが決定します。今回の例で言うとBoardモデルからMessageを呼び出しているので、messagesテーブルにはboard_idが必要ということです。Eloquentはboard_idと呼び出し元のboardsテーブルのidを結合して取得してきます。このデフォルトのキーがリレーションしたいキーではない場合は、モデルを呼び出す時に引数として渡すことができます。phonesテーブルとusersテーブルがあるとします。stringphonesテーブルにはuser_idの代わりに、user_numberがあるとします。Userモデルから呼び出す場合は、下記のようにリレーションするときのキーを指定することができます。'user_number');}こうすると、呼び出し先のphonesテーブルのuser_numberと呼び出し元のusersテーブルのidでリレーションが作れます。usersテーブルのリレーションしたいキーがidじゃない場合は、下記のように渡すことができます。すると、呼び出し先のphonesテーブルのuser_numberと呼び出し元のusersテーブルのuser_numberをリレーションすることになります。'user_number');}ここではhasOneを例にしていますが、hasManyの場合も同じように渡すことができます。'呼び出し元のキー');hasManyの場合も同じですが、下記のようになります。'呼び出し元のキー');おわりに今回はEloquentのリレーションについて記載しました。簡単にリレーションを作ることが可能なことがわかったかと思います。気をつけるべきは、呼び出し先のテーブルに[呼び出し元のテーブル名+’_id’]で作っておかないといけませんでした。ない場合は取得することができないので、作成するようにしてください。リレーションしたいカラムが別のカラムの場合でも引数に指定することでリレーションが作れることもわかりました。複雑な条件などがない場合はリレーションで取得して使うと良いかと思います。独学に限界を感じたら、オンラインで学んでみよう!本当にわからない場合は、知っている人に聞くと近道になります。・PHP/Laravelのおすすめプログラミングスクール5選!PHP/Laravelのおすすめプログラミングスクール5選!PHPやLaravelが学べるプログラミングスクールを5つ選んで比較してみました。総合的にみると、Freeksがサブスク型で始められて、就職支援まで行ってくれるので良さそうでした!PHP/Laravelが学べるプログラミングスクール5選ゲス...codelikes.com2022.10.15LaravelPHPプログラミングシェアするTwitterFacebookはてブPocketLINEコピーyasuakiをフォローするyasuakiコードライクPython【Python入門】例外処理を書く方法!(try/except)Pythonの例外処理についてまとめました。最初にPythonの例外処理について解説しています。その後に下記について書いています。Union)C#で配列を結合する方法について書いています。配列の要素を結合する方法として、下記のメソッドを使うことが可能です。・Array.Copy・Concat(LINQ)・Union(LINQ)載せているコードについては、.Netのバージョン6(C...PythonPythonでユーザーの入力を受け取る方法!(入力待ち状態)Pythonをコマンドで実行したときに、ユーザー入力を受け付ける方法について書いています。Python3系のバージョンの場合はinput関数で入力を受け付けて、Python2系の場合にはraw_input関数を使うと良いです。ユーザー入力を...PythonPythonで文字列を結合(連結)する3つの方法!Pythonで文字列を結合する方法について書いています。文字列を結合する場合には、下記の演算子やメソッドを使用できます。・プラス演算子(`+`)を使う・プラスイコール演算子(`+=`)を使う・joinメソッドを使う(文字列のリストから結合)...JavaScriptJavaScriptでテキストファイルを読み込む方法!JavaScriptで、選択されたファイルの内容を読み込む方法について書いています。今回はテキストファイルを読み込んで表示してみました。ファイルを読み込む際にはFileオブジェクトに対して、FileReaderオブジェクトを使ってあげると良...JavaScriptJavaScriptのundefinedとは?判定やnullと違いなどJavaScriptのundefinedについてまとめました。undefinedについて解説した後に、下記のことについて書いています。・undefinedになるパターンについて・undefinedの判定方法・undefinedとnullの違...プログラミングVBAの学習におすすめ本5選!【現役エンジニア選定】VBAの学習におすすめの本を選定してみました。最初にVBAはどんなものかと、学習に本が必要かを考えて書いてみました。※Amazonのお試し読みでひと...JavaScriptJavaScriptのNull合体演算子(”??”)の使い方!JavaScriptのNull合体演算子の使い方について書いています。その後に実際に8パターンのコードで動作を検証した結果を書きました。コメントをキャンセルメールアドレスが公開されることはありません。名前メールサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。Δプロフィールyasuaki福岡でフリーランスをやってます。業界歴13年になりました、SESで働くことがほとんどです。なんでもやってますが、Webが得意です。このブログではプログラミング技術の内容を中心に、たまに商品レビューとかを書いています。配列のまとめ要素を追加する要素を削除する配列を結合する要素を含むか確認する要素数を数える配列の値を展開するPHP/Laravelの学習におすすめの本を選定!・PHPの学習におすすめの本6選!【現役エンジニアが選定】PHPの学習におすすめの本6選!PHPの学習におすすめの本を6つ紹介しています。Laravel・CakePHP・SymfonyなどのWebフレームワークやWordPressなどに使われているPHP。フレームワークの内部のコードや、使用されているシステムのコードを理解するた...codelikes.com2022.08.04・Laravelの学習におすすめの本3選!【現役エンジニアが選定】Laravelの学習におすすめの本3選!(本が必要?)今回はLaravelの学習にオススメの本を3つ紹介しています。学習するにあたって本が必要か考えてみました。Techpit前半はPHPのみでEvernote風メモアプリケーションを開発し、後半は同じものをLaravelで開発する。フレームワークを使用しない場合の開発と、Laravelのメリットを実際に開発することで体感。開発を通じて、簡単なアプリケーションの作り方やSQLの書き方、dockerの使用方法などを学ぶ。商品レビューゲーム食レポお問い合わせホーム検索トップサイドバータイトルとURLをコピーしました。