今回はリレーション、テーブルとテーブルを1対1で結ぶ「belongToメソッド」を解説します。
Laravelについてよくわからないや。。。という方は、以下を併せて読んでいただけるとご理解いただけると思います。
Laravelとは?現在の、PHPフレームワークの筆頭として大活躍 (akihisa-h.com)
belongToで1対1リレーション構築
belongToメソッドは、テーブル間で1対1の関係を構築する時に使います。
例として、会員情報用の「userテーブル」と、各会員の住所を記録した「addressテーブル」があるとします。
このとき「userテーブル」が主で、ユーザー情報を補足している「addressテーブル」は「userテーブル」に対して従属した関係となっています。ふたつのテーブルをユーザーIDを介して、リレーションを構築します。
| ユーザーID | id |
| ユーザー名 | name |
| メールアドレス | |
| パスワード | password |
| 作成日時 | created at |
| ID | id |
| ユーザーID | user_id |
| アドレス | address |
| 作成日時 | created at |
belongsToメソッドを使ってリレーションを定義します
「addressテーブル」側から定義します。
「addressテーブル」は、「userテーブル」内のカラムを使用して、「userテーブル」に属している関係性を持ちます。
「addressテーブル」側から「userテーブル」に対してリレーションを作るとき、【belongsTo】メソッドを使います。
belongsToメソッドを使ってリレーションを実践します
「addressテーブル」から「userテーブル」へリレーションを定義します。
1.Addressモデルにリレーションを追加する
appフォルダの「Address.php」ファイルを編集していきます。
public function user() {
return $this->belongsTo(User::class);
}
この設定をしたことで、AddressモデルからUserモデルを呼び出せるようになります。
2.リレーションを確認してみます
routesフォルダの中の「web.php」 ルートファイルを編集していきます。
Addressモデルを名前空間を省略して呼び出せるように、 web.phpファイルの先頭に下記の一文を書き加えます。
use App\Models¥Address;
続いて、下記のコードを追加します。
Route::get('/{id}/address', function($id) {
$address=Address::find($id);
return "アドレス番号".$id."のユーザーの名前は".$address->user->name."さんです。";
});
コードの説明
- {id}/addressページにアクセスしたら、function() { } の命令を実行します。
- アドレス番号は、$id 番のアドレスとします。
- 「”アドレス番号”.$id.”のユーザーの名前は”.$address->user->name.”さんです。”」という文を返してください。$address->user->nameは、このアドレス番号をもつユーザーの「name」を取ってくるという意味です。
ブラウザを開き、デフォルトのページのURLに 【/1/address】として、アクセス ⇒内容が表示されればOKです。
従となる側でリレーションを定義する時はbelongsToを使います。
以上、リレーション「belongTo」について解説でした。
おすすめ学習書
PHPフレームワークLaravel実践開発 [ 掌田津耶乃 ] 価格:3300円 |
アプリケーション開発には、基本のMVC以外の機能実装が非常に重要になります。
本書は、既刊『PHPフレームワーク Laravel入門』を読み終わった方に向けて、もっと知りたいという要望の高かったMVC以外の機能実装の手法を解説します。コア機能の詳細から、サービス、DBクラスとEloquent、ジョブ管理、フロントエンド(Vue.js、React、Angular)との連携、ユニットテスト、Artisanコマンドまで詳細にわかります。
Laravel5.8.9準拠。
PHPフレームワークLaravel入門第2版 [ 掌田津耶乃 ] 価格:3300円 |
PHPフレームワークのロングセラー定番解説書が、新バージョン対応で改訂!
本書は、Laravelのインストールから、フレームワークの中心になるModel-View-Controller(MVC)の使い方、開発に役立つ各種機能をわかりやすく解説した入門書です。新しいディレクティブ(@csrf/@error)、バリデーションルール(増補解説+自作)、Bootstrapによるぺジネーションリンク、Auth(Laravel/uiパッケージ)の使い方などの項目を追加しました!
Laravelの教科書 バージョン10対応 [ 加藤 じゅんこ ] 価格:3300円 |
PHPでWebアプリケーションを開発するための定番フレームワーク「Laravel(ララベル)」の最新版「バージョン10」に対応した解説書。
・できるだけ分かりやすくLaravelを学びたい
・すべてのステップを省略せずに教えてほしい
・セキュリティなど、Webアプリ開発において大事な知識も得たい
そんな人のための解説書です。
動かして学ぶ!Laravel開発入門 (NEXT ONE) [ 山崎 大助 ] 価格:3300円 |
デジタルハリウッド・ジーズアカデミーなどでLaravel講座をもつ著者が、多くの受講生の声を反映して執筆したLaravelの入門書です。
サンプル作りを通して、LaravelによるWebアプリの設計・作成の基本、ルーティング、リエクスト処理、ビュー、認証、ページネーション、モデルのリレーション、ファイルアップロードの基本などを一通り学ぶことができます。