$client::query() ->with('person') ->when($request->input('search'), fn($que, $search) => $que->whereHas( 'person', fn($q) => $q->where('full_name', 'ilike', '%' . $search . '%') ) ) ->where('active', 1) ->orderByDesc('created_at') ->paginate(15) ->withQueryString(), 'filters' => $request->only(['search']) ]); } public function show(Client $client, Request $request) { $data = $client::query() ->with(['person' => fn($que) => $que->with(['addresses','phones'])]) ->findOrFail($client->id); return Inertia::render('Client/Show', [ 'client' => $data, 'client_cases' => $data->clientCases() ->with('person') ->when($request->input('search'), fn($que, $search) => $que->whereHas( 'person', fn($q) => $q->where('full_name', 'ilike', '%' . $search . '%') ) ) ->where('active', 1) ->orderByDesc('created_at') ->paginate(15) ->withQueryString(), 'filters' => $request->only(['search']) ]); } public function store(Request $request) { DB::transaction(function() use ($request){ $address = $request->input('address'); $phone = $request->input('phone'); $person = \App\Models\Person\Person::create([ 'nu' => rand(100000,200000), 'first_name' => $request->input('first_name'), 'last_name' => $request->input('last_name'), 'full_name' => $request->input('full_name'), 'gender' => null, 'birthday' => null, 'tax_number' => $request->input('tax_number'), 'social_security_number' => $request->input('social_security_number'), 'description' => $request->input('description'), 'group_id' => 1, 'type_id' => 2 ]); $person->addresses()->create([ 'address' => $address['address'], 'country' => $address['country'], 'type_id' => $address['type_id'] ]); $person->phones()->create([ 'nu' => $phone['nu'], 'country_code' => $phone['country_code'], 'type_id' => $phone['type_id'] ]); $person->client()->create(); }); //\App\Models\Person\PersonAddress::create($address); return to_route('client'); } }