Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Laravel】Eloquentのリレーション② belongsTo結合について

PHPバージョン:7.1.14
Laravelバージョン:5.7.9

Eloquentのリレーション、続いてはbelongsTo結合についてです!
hasOneは主テーブルから従テーブルを読み込むメソッドでしたが、
belongsToは逆に従テーブルから主テーブルを読み込みます!


Articleモデル編集

まずは従テーブルであるArticleモデルを編集します。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    protected $guarded = array('id');
// ***** 開始 *****
    public function author() {
        return $this->belongsTo('App\Models\Author');
    }
// ***** 終了 *****
}

app>Models/Article

主テーブルのモデルAuthorを読み込むauthorメソッドを作成します。
従テーブルから主テーブルを読み込むbelongsToメソッドをreturnします。
引数にはAuthorモデルへのパスを記述します。

ArticleController編集

続いてArticleControllerを編集します。

<?php

namespace App\Http\Controllers;

use App\Models\Author;
use App\Models\Article;
use Illuminate\Http\Request;

class ArticleController extends Controller
{
    function index() {
// ***** 開始 *****
        $articles = Article::all();
        foreach($articles as $a) {
            dump( 'タイトル:' . $a->title .
                ' 著者:' . $a->author->name);
        }
// ***** 終了 *****
    }
}

app>Http>Controllers>ArticleController.php

indexメソッドを変更しました。
hasOneの時の主テーブル(Author)と従テーブル(Article)を
逆にした感じです。

Articleモデルから全件データを読み込み、
foreach分で回し、
Articleモデルで先ほど作成したauthorを
プロパティの形で呼び出しています。

結果

f:id:hiyotama:20181108185322p:plain

ArticleControllerにてArticleモデルのみを読み込みましたが、
belongsToを使いAuthorモデルのnameを読み込むことに成功しました!

今回はここまでです、ありがとうございました〜!