私はユーザーモデルとイベントモデルを持っています。Laravel 5.3関連モデルを配列で保存する
ユーザーは/持っているイベントは、ユーザーに属している多くのイベント
を作成することができます。私はデモのためにこのフォームを作った
:
と私は($リクエスト)をddをするとき、私はこの出力を取得します。私のデータベーステーブルのイベントでこれを保存する方法
。 これらの配列フィールドに問題があります...私はユーザーとイベント以外のいくつかの新しいテーブルを作る必要がありますか?
私はユーザーモデルとイベントモデルを持っています。Laravel 5.3関連モデルを配列で保存する
ユーザーは/持っているイベントは、ユーザーに属している多くのイベント
を作成することができます。私はデモのためにこのフォームを作った
:
と私は($リクエスト)をddをするとき、私はこの出力を取得します。私のデータベーステーブルのイベントでこれを保存する方法
。 これらの配列フィールドに問題があります...私はユーザーとイベント以外のいくつかの新しいテーブルを作る必要がありますか?
はい、別のテーブルが必要です。私はちょうど職業を保存しているテーブルを持っているように見えますが、これらの時間と専門職が何を参照しているか100%確信していないので、テーブル名を推測しましたが、ここに私が見ることができる関係はあります:
A user can have many events
An event belongs to a user
An event has many timeslots
A timeslot belongs to an event
A profession has many timeslots
A timeslot has many professions
だからあなたのイベントや職業(あなたがそれ何か他のものと呼んでいても心配しないでください)テーブルには、次のようになります。
イベント(ID、USER_ID 、名前、開始、終了);
職業(id、職業、..);
そして、あなたは、余分なテーブルを追加する必要があります。
time_slots(ID、EVENT_ID、profession_id、量、から、時間に)
は、その後、あなたの内側にそれらの関係を設定しますモデル。
EDIT
storeメソッドを作るための基本的な方法はそうのような関係を使用することです:
public function store(Request $request){
// Get the request as an array
$request = $request->all();
// create a new event
$event = Event::create($request);
// Map timeslots to an array of Timeslot objects:
$timeslots = array_map(function($personalId, $amount, $from, $to, $hours) {
return new App\Timeslot($personalId, $amount, $from, $to, $hours);
}, $request['personal_id'], $request['amount'], $request['from'], $request['to'], $request['hours']);
// Save all timeslots for the event
$event->timeslots()->saveMany($timeslots)
}
私はそのコードを試していないが、それはあなたが権利をINB指している必要があります方向。
https://laravel.com/docs/5.3/eloquent-relationships#the-save-method
アレイの問題はどのようなものです:あなたは、これがどのように動作するかを確認するためにlaravel関係を見てみる必要がありますか? –
配列を1行にどのように保存しますか? – lewis4u
https://laracasts.com/series/laravel-5-fundamentals –