Laravel5.6, 5.7 Voyagerでリレーションを設定する

Laravel5.6, 5.7 Voyagerでリレーションを設定する

VoyagerのBREADがかなり使いやすいこと、基本の設定は以前の記事でお伝えした通りですが、今回はBREADの編集画面からリレーションを設定したいと思います。

今回は例としてProducts設定時にカテゴリ(belongsTo)、タグ(belongsToMany)を追加します。

事前準備

①products, categories, tagsテーブルを作成します。

この時一緒にモデルも作成します。

②Products BREADを作成、一時保存します。

Products の「Add BREAD to this table」をクリック、適宜項目修正してSubmit、BREADを保存します。この時、リレーションを設定するものは設定をhiddenに変更します。

BelongsTo

CategoriesをbelongsToに設定します。

BREAD設定画面の「Create a Relationship」をクリック。

以下のような画面が出てきますのでそれぞれ項目を設定します。

・セレクトボックスをProduct->Belongs To -> Category -> App\Category(モデル名)に変更

・「Which column from the Product is used to reference the Category?」を 「category(category_idのがよかったかな)」に変更

・「Display the Category」をnameに変更

・「Store the Category」id に変更

BelongsToMany

tagをBelongs To Many に変更します。

ピボットテーブルの作成

リレーションテーブル「product_tag」を上記のように作成します。カラムはId, product_id, tag_id、後timestampです。

リレーションの設定

BREAD設定画面の「Create a Relationship」をクリック。

・セレクトボックスProduct-> Belongs To Many -> Tag -> App\Tag

・Pivot Table ->「Product_tag」

・Display the Tag-> 「name」

・Allow taggingはどちらでも

 

Allow taggingをonにすると、リレーション先に保存されていないデータを追加できるようになります。(日本語には対応していませんが、、、、)日本語を追加できるようにするにはJSから変更が必要です。

 

以上、BREAD設定画面からbelongsTo, belongsToManyを設定方法でした!

フロント側のリレーションはモデル側で関数を記述、クエリビルダからwith()を使用することでかなりクエリ数を削減できますので、ぜひ活用してみてください。

 

※nameなどのカラムがintになってますね、、、適当にvarcharやtextに置き換えてください。。

Laravelカテゴリの最新記事