前回は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形式で表示できるようにします。