latest()->get(); } public function find($id) { return LocationRestriction::findOrFail($id); } public function create(array $data) { DB::beginTransaction(); $location = new LocationRestriction(); $location->country = $data['country']; $location->status = $data['status']; $location->save(); $state_values = []; if ($data['state_values']) { foreach ($data['state_values'] as $value) { if ($value) { $state_values [] = [ 'location_restriction_id' => $location->id, "state" => $value, "created_at" => Carbon::now() ]; } } LocationRestrictionState::insert($state_values); } DB::commit(); } public function update(array $data, $id) { DB::beginTransaction(); $location = LocationRestriction::findOrFail($id); $location->country = $data['country']; $location->status = $data['status']; $location->save(); $collection1 = collect($data['edit_state_values']); $collection2 = collect($location->states->pluck('state', 'id')); $newDifferentItems = $collection1->diff($collection2); $new_variant_values = $newDifferentItems->all(); if (count($new_variant_values) > 0) { foreach ($new_variant_values as $key => $new_variant_value) { if (!empty($data['state_id'][$key])) { $attri_value = LocationRestrictionState::find($data['state_id'][$key]); if ($attri_value) { $attri_value->update([ 'state' => $new_variant_value ]); } } else { LocationRestrictionState::create([ 'state' => $new_variant_value, "location_restriction_id" => $location->id ]); } } } DB::commit(); } public function delete($id) { $location = LocationRestriction::findOrFail($id); if ($location) { $location->delete(); } else { return "not_possible"; } } }