2016-10-28 1 views
0

私はユーザーモデルとイベントモデルを持っています。Laravel 5.3関連モデルを配列で保存する

ユーザーは/持っているイベントは、ユーザーに属している多くのイベント

を作成することができます。私はデモのためにこのフォームを作った

enter image description here

と私は($リクエスト)をddをするとき、私はこの出力を取得します。私のデータベーステーブルのイベントでこれを保存する方法

enter image description here

。 これらの配列フィールドに問題があります...私はユーザーとイベント以外のいくつかの新しいテーブルを作る必要がありますか?

+0

アレイの問題はどのようなものです:あなたは、これがどのように動作するかを確認するためにlaravel関係を見てみる必要がありますか? –

+0

配列を1行にどのように保存しますか? – lewis4u

+0

https://laracasts.com/series/laravel-5-fundamentals –

答えて

2

はい、別のテーブルが必要です。私はちょうど職業を保存しているテーブルを持っているように見えますが、これらの時間と専門職が何を参照しているか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

+0

こんにちはクレイグ、私はあなたにツイートでメッセージを送ろうとしましたが、あなたがそれを持っているかどうかわかりません....とにかく私はこのフォームのコントローラにメソッドを格納する...それは私が作る方法を知らないことです! – lewis4u

+0

あなたがそこにいたら私はあなたの助けが必要ですか? – lewis4u

+0

私はあなたが言ったようにすべてをやった....今は欠落しているのは、フォームからDBにデータを保存する方法だけです。ストアメソッド – lewis4u

関連する問題