PHP-Laravel- プログラミング

【Laravel入門】belongTo リレーションの解説

今回はリレーション、テーブルとテーブルを1対1で結ぶ「belongToメソッド」を解説します。

Laravelについてよくわからないや。。。という方は、以下を併せて読んでいただけるとご理解いただけると思います。

Laravelとは?現在の、PHPフレームワークの筆頭として大活躍 (akihisa-h.com)

belongToで1対1リレーション構築

belongToメソッドは、テーブル間で1対1の関係を構築する時に使います。

例として、会員情報用の「userテーブル」と、各会員の住所を記録した「addressテーブル」があるとします。

このとき「userテーブル」が主で、ユーザー情報を補足している「addressテーブル」は「userテーブル」に対して従属した関係となっています。ふたつのテーブルをユーザーIDを介して、リレーションを構築します。

ユーザーIDid
ユーザー名name
メールアドレスemail
パスワードpassword
作成日時created at
userテーブル
IDid
ユーザーIDuser_id
アドレスaddress
作成日時created at
addressテーブル

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」について解説でした。

おすすめ学習書

アプリケーション開発には、基本のMVC以外の機能実装が非常に重要になります。
本書は、既刊『PHPフレームワーク Laravel入門』を読み終わった方に向けて、もっと知りたいという要望の高かったMVC以外の機能実装の手法を解説します。コア機能の詳細から、サービス、DBクラスとEloquent、ジョブ管理、フロントエンド(Vue.js、React、Angular)との連携、ユニットテスト、Artisanコマンドまで詳細にわかります。
Laravel5.8.9準拠。

PHPフレームワークのロングセラー定番解説書が、新バージョン対応で改訂!
本書は、Laravelのインストールから、フレームワークの中心になるModel-View-Controller(MVC)の使い方、開発に役立つ各種機能をわかりやすく解説した入門書です。新しいディレクティブ(@csrf/@error)、バリデーションルール(増補解説+自作)、Bootstrapによるぺジネーションリンク、Auth(Laravel/uiパッケージ)の使い方などの項目を追加しました!

PHPでWebアプリケーションを開発するための定番フレームワーク「Laravel(ララベル)」の最新版「バージョン10」に対応した解説書。

・できるだけ分かりやすくLaravelを学びたい
・すべてのステップを省略せずに教えてほしい
・セキュリティなど、Webアプリ開発において大事な知識も得たい

そんな人のための解説書です。

デジタルハリウッド・ジーズアカデミーなどでLaravel講座をもつ著者が、多くの受講生の声を反映して執筆したLaravelの入門書です。
サンプル作りを通して、LaravelによるWebアプリの設計・作成の基本、ルーティング、リエクスト処理、ビュー、認証、ページネーション、モデルのリレーション、ファイルアップロードの基本などを一通り学ぶことができます。

-PHP-Laravel-, プログラミング

error: Content is protected !!