2016-11-07 4 views
0

У меня есть 3 моделиLaravel сохранить вложенную модель hasManyThrough

Event has many Shifts 

Shift belongs to Event 

Shift has many ShiftWorkers 

ShiftWorker belongs to Shift 

, когда я получаю, чтобы сохранить все модели сразу через HTML формы с помощью этого метода хранения в контроллере:

public function store(EventsForm $request) 
{ 
    //dd($request->all()); 

    // save event 
    $event = Auth::user()->events()->create($request->all()); 

    $total_shifts = count($request->shift_start); 

    $shifts = []; 

    for ($s = 0; $s <= $total_shifts-1; $s++) { 
     array_push($shifts, new Shift(['shift_start' => $request->shift_start[$s], 'shift_end' => $request->shift_end[$s]])); 
    } 

    // save shifts 
    $event->shifts()->saveMany($shifts); 

    $workers = []; 

    for ($w = 0; $w <= $total_shifts-1; $w++) { 

     array_push($workers, new ShiftWorker(['quantity' => $request->quantity[$w], 'hour_wage' => $request->hour_wage[$w]])); 

    } 

    // save workers 
    $event->shifts()->shift_workers()->saveMany($workers); 

я получаю эту ошибку

Звонок на неопределенный метод Illuminate \ Database \ Query \ Builder :: shift_workers()

Как я могу сохранить свою третью модель (ShiftWorker)?

ответ

1

Каждая смена имеет hasMany, поэтому вы не можете позвонить shift_workers() в коллекцию.

Вы имеете в петлю, как показано ниже:

foreach ($event->shifts as $shift) { 
    $shift->shift_workers()->saveMany($workers); 
} 
+0

Я вижу, теперь я знаю, что моя проблема, но теперь это еще труднее решить эту проблему .... я не то же самое количество сменщиков в каждой смене .... как я могу сэкономить сменщика на его смену .... какой цикл использовать? например, если первая смена имеет один сменщик, а вторая смена имеет 2 .... – lewis4u

+0

Это другой вопрос, я полагаю. Вы должны определить своих сменщиков внутри цикла. Пожалуйста, отметьте правильный ответ выше. – schellingerht

Смежные вопросы