現状
現在、Laravel + Vueでしおり作成サービスのようなものを作成しています。
HTTP通信にはaxiosを使用しています。
フォームの数が動的に変わるこのサイトのしおり作成画面がイメージしてます。
参考URL
※ 日時は現状入れておりません。
現状、悩んでいるのは**「しおり作成機能」**です。
特に以下の3つです。
- モデル設計はこれでいいのか?
- テーブルが複数になった場合は、しおり作成時、一括で全部のデータを送る方法はアリなのか?
- 1対多のデータ取得方法がわからない
モデル設計はこれでいいのか?
以下がモデル設計です。
guide - id (PK) - guide_title guide_overview - id (PK) - guide_id ( FK <guide> ) - overview_title - overview_content guide_place - id (PK) - guide_id ( FK <guide> ) - place - place_detail
過去、一つ(Guide)にまとめていて、場所などは配列から文字列にシリアライズしていたのですが、少し怖かったのでこの形式にしたという流れです。
テーブルが複数になった場合は、しおり作成時、一括で全部のデータを送る方法はアリなのか?
以下が作成時にサーバー側に渡されるパラメータです。
疑問点
3つモデルがある中で、一つのコントローラーに集約して処理を書くと汚くなりそう。
form: { title: '', days: '', overviewForm: [ { overview: '', content: '' } ], placeForm: [ { place: '', detail: '' } ] },
1対多のデータ取得方法がわからない
現状でてるエラー
Exception: Property [id] does not exist on this collection instance
controller
return new GuideResource(MainBookmark::all());
resource(guide)
public function toArray($request) { return [ 'id' => $this->id, 'guide_title' => $this->guide_title, 'overviewForm' => [ BookmarkOverviewResource::collection($this->overviewForm) ], 'placeForm' => [ BookmarkPlaceResource::collection($this->placeForm) ], ]; }
resource(guide_place)
public function toArray($request) { return[ 'place' => $this->place, 'detail' => $this->place_detail ]; }
resource(guide_overview)
public function toArray($request) { return [ 'overview' => $this->overview_title, 'content' => $this->overview_content ]; }
かなり長くなってしまいましたが3つあるうちの1つでもいいのでご回答いただけると幸いです!
回答1件
あなたの回答
tips
プレビュー