Posts Issued on November 21, 2022

posted by sakurai on November 21, 2022 #554

リレーション定義

コードを見ると、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/の下にあります。修正はコントローラとビューの両方について行います。

表554.1 画面、アクション、ビューの対応表
アイコン コントローラ内
メソッド(アクション)
1次ビューファイル
(黄色がアクションに対応)
2次ビューファイル
一覧表示 index() index.blade.php table.blade.php
fig554-1.png create() create.blade.php fields.blade.php
fig554-2.png show() show.blade.php show_fields.blade.php
fig554-3.png edit() edit.blade.php fields.blade.php


左矢前のブログ 次のブログ右矢