Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

[忘備録]laravel5.5 データベースjoin 結合

$
0
0

laravelを用いて初めてデータベースの結合をしてみると、想像以上に簡単だったので、忘備録として残しておこうと思う。

前提

データベースにlaravelデフォルトの usersに加え、  id, uesr_id, textカラムを含む postsテーブルを用意する。

postsテーブルを作成する際はマイグレーションファイルで user_idカラムを次のように設定する。

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');

流れ

①モデル設定
②コントローラーから使う

①モデル設定

今回はユーザーが複数のpostを持つというで、以下のような関係になります。

user has many posts
posts belongs to user

この点を踏まえて、 User.php, Post.php に以下のコードを追記。

User.php
publicfunctionposts(){return$this->hasMany('App\Post');}
Post.php
publicfunctionuser(){return$this->belongsTo('App\User');}

これで準備は整いました。

②コントローラーから使う

今回はコントローラーで確認用 unction join()という関数を作ります。

Post.php
functionjoin(){#postsテーブルのuser_idが1のレコードを全て取得$user=User::find(1);$posts=$user->posts;#postテーブルのデータを全て取得$posts=Post::all();#上記で取得した「postsテーブルのuser_idが1のレコード」をひとつずつ表示foreach($postsas$post){echo$post."<br/>";}#上記で取得した「postテーブルのデータ」から結合されたユーザーの名前をひとつずつ表示する。foreach($postsas$post){echo$post->user->name."<br/>";}}

これで、適当にルート設定をし、うまく表示されていることを確認することができました。

おかしな部分がある場合、指摘していただけるとありがたいです。


Viewing all articles
Browse latest Browse all 5608

Trending Articles