LaravelでVueを使う時のリレーション – Modelでリレーションを設定

当サイトではアフィリエイト広告を利用して商品を紹介しています。
当サイトではアフィリエイト広告を利用して商品を紹介しています。

前回はLaravelでマイグレーションファイルを作成しました。

今回はusstocksテーブルとmarketsテーブルに対応したModelでリレーションの設定について説明します。

Modelの作成

まずはusstocksテーブルとmarketsテーブルに対応したModelファイルを作成します。
usstocksテーブルに対応したModel名をUsstockとして、marketsテーブルに対応したModel名をMarketとします。

php artisan make:modelがコマンド名でUsstocksがファイル名となります。

php artisan make:model Usstock
php artisan make:model Market

最初にLaravelのプロジェクトを作成するとデフォルトでUserという名前のModelファイルがありファイル名が大文字で始まっています。
当サイトでもそれに従って作成します。

Modelの設定

リレーションでusstockからmarketへアクセスできるようにする設定します。

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Usstock extends Model {
  // 文字列でプライマリーキーを使用するために必要な設定
  protected $keyType = 'string';
  protected $primaryKey = 'ticker';

  public function market(){
    return $this->belongsTo(Market::class,'market_id','market_id');
  }
}

12行目からmarket関数を作成してbelongsToメソッドを使ってリレーションの設定を記述します。
13行目のbelongsToメソッドの第1引数はMarketのModelクラスを指定して、第2引数にはusstocksテーブルのmarket_idを指定して、第3引数には親となるmarketsテーブルのmarket_idを指定しています。
他にもhasOneやhasManyなどメソッドがありますので、日本語リファレンスを以下を参照してください。

8.x Eloquent:リレーション Laravel

ちなみに9行目と10行目は文字列を主キーを使用する場合に必要になります。
こちらを参考にしてみてください。

次回はcontrollerを作成してJSON形式で表示できるようにします。

タイトルとURLをコピーしました