with(['negeri:kodnegeri,negeri', 'daerah:koddaerah,namadaerah']) ->when(request()->query_string, function ($q) { return $q ->where('poskod', 'like', '%' . request()->query_string . '%') ->orWhereHas('negeri', function ($b) { $b->where(DB::connection('mysql7')->raw('lower(negeri)'), 'like', '%' . strtolower(request()->query_string) . '%'); }) ->orWhereHas('daerah', function ($b) { $b->where(DB::connection('mysql7')->raw('lower(namadaerah)'), 'like', '%' . strtolower(request()->query_string) . '%'); }); }) ->paginate(12); return response() ->json($poskod) ->header('query_string', request()->query_string); } public function showOnePoskod($poskod) { $poskod = Poskod::on('mysql7') ->with(['negeri:kodnegeri,negeri', 'daerah:koddaerah,namadaerah']) ->where('poskod', '=', $poskod) ->first(); return response()->json($poskod); } public function store(Request $request) { try { $validated = $this->validate($request, [ 'poskod' => 'required|numeric|digits:5|unique:poskod,poskod', 'koddaerah' => 'required|numeric', 'kodnegeri' => 'required|numeric', ]); } catch (ValidationException $e) { return response()->json($e, 403); } $created_poskod = Poskod::on('mysql7')->create([ 'poskod' => $validated['poskod'], 'koddaerah' => $validated['koddaerah'], 'kodnegeri' => $validated['kodnegeri'], ]); return response()->json($created_poskod, 200); } public function update(Request $request) { $poskod = Poskod::on('mysql7')->find($request->recno); try { $validated = $this->validate($request, [ 'poskod' => 'required|numeric|digits:5|unique:poskod,poskod,' . $poskod->poskod . ',poskod', 'koddaerah' => 'required|numeric', 'kodnegeri' => 'required|numeric', ]); } catch (ValidationException $e) { return response()->json($e, 403); } $poskod->update([ 'poskod' => $validated['poskod'], 'koddaerah' => $validated['koddaerah'], 'kodnegeri' => $validated['kodnegeri'], ]); $poskod_changes = $poskod->getChanges(); $getProperChanges = function($poskod_changes){ $changes = []; if(array_key_exists('poskod', $poskod_changes)){ $poskod = $poskod_changes['poskod']; array_push($changes, compact('poskod')); } if(array_key_exists('koddaerah', $poskod_changes)){ $daerah = Daerah::where('koddaerah', '=', $poskod_changes['koddaerah'])->first()->namadaerah; array_push($changes, compact('daerah')); } if(array_key_exists('kodnegeri', $poskod_changes)){ $negeri = Negeri::where('kodnegeri', '=', $poskod_changes['kodnegeri'])->first()->negeri; array_push($changes, compact('negeri')); } return array_merge(...$changes); }; $poskod_changes = $getProperChanges($poskod_changes); return response()->json(compact('poskod', 'poskod_changes'), 200); } }