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に置き換えてください。。
コメントを書く