21 |
laravelによるスキャフォールディング (3) |
リレーション定義
コードを見ると、app/Models/Category.phpにおいては、
public function docs()
{
return $this->hasMany(AppModelsDoc::class, 'category_id');
}
これは、A category has many docsと読みます。1対nの関係です。また、app/Models/Doc.phpでは、
public function category()
{
return $this->belongsTo(AppModelsCategory::class, 'category_id');
}
とあり、これはA doc belongs to a categoryと読みます。n対1の関係です。
リレーションを辿る方法
yiiのように、ドット記述だけでリレーションを辿るようなうまい方法はなさそうですが、
$doc->category_id
のようにインデックス値は得られるので、$categories配列に全てのメンバを集めるというひと手間かけた上で
$categories[$doc->category_id]
のように表を引いて名前への変換を行います。
コントローラ、ビューの対応表
以下に画面、コントローラ中のアクション、ビューの対応表を示します。これに従い、それぞれのアクション及びビューを修正します。コントローラはapp/Http/Controllers/DocController.phpであり、ビューは全て、resources/views/docs/の下にあります。修正はコントローラとビューの両方について行います。
アイコン | コントローラ内 メソッド(アクション) |
1次ビューファイル (黄色がアクションに対応) |
2次ビューファイル |
---|---|---|---|
一覧表示 | index() | index.blade.php | table.blade.php |
create() | create.blade.php | fields.blade.php | |
show() | show.blade.php | show_fields.blade.php | |
edit() | edit.blade.php | fields.blade.php |