public function update($data) { $sample = null; if (isset($data['id'])) { if ($sample = Sample::find($data['id'])) { $sample->update($data); if (isset($data['producer_id'])) { if ($data['producer_id'] == 'new') { unset($data['producer_id']); $producer = new Producer(); $producer->name = $data['producer__name']; $producer->customer_id = $sample->customer_id; $producer->contact_person = $data['producer__contact_person']; $producer->email = $data['producer__email']; $producer->phone = $data['producer__phone']; $producer->save(); $sample->producer_id = $producer->id; $sample->save(); } } if (isset($data['varietals'])) { if (is_array($data['varietals'])) { $sample->sample_varietals()->delete(); foreach ($data['varietals'] as $varietal_data) { if ($varietal_data['name'] && $varietal_data['percentage']) { $sample_varietal = $sample->sample_varietals()->save(new SampleVarietal($varietal_data)); } } } } if (isset($data['prizes'])) { if (is_array($data['prizes'])) { foreach ($data['prizes'] as $prize_data) { if ($prize_data['id']) { $sample_prize = SamplePrize::find($prize_data['id']); $sample_prize->name = $prize_data['name']; $sample_prize->year = $prize_data['year']; $sample_prize->save(); } elseif ($prize_data['name']) { $sample_prize = $sample->sample_prizes()->save(new SamplePrize($prize_data)); } } } } $sample = $this->getById($data['id']); } } return $sample; }