with('practitioner.person', 'organization') // ->when($request->search ?? null, function ($query, $search) { // $query->whereHas('practitioner.person', function ($person) use ($search) { // $person->where('name', 'LIKE', '%' . $search . '%'); // }); // })->paginate(); $doctors = Practitioner::with('person', 'practitionerRoles.organization', 'practitionerRoles.speciality') ->when($request->search ?? null, function ($query, $search) { $query->whereHas('person', function ($person) use ($search) { $person->where('name', 'LIKE', '%' . $search . '%'); }); }) ->when($request->organization_id ?? null, function ($query, $organization_id) { $query->whereHas('practitionerRoles', function ($practitionerRole) use ($organization_id) { $practitionerRole->where('organization_id', $organization_id); }); }) ->when($request->speciality_id ?? null, function ($query, $speciality_id) { $query->whereHas('practitionerRoles', function ($practitionerRole) use ($speciality_id) { $practitionerRole->where('speciality_id', $speciality_id); }); }) ->paginate(); // return $doctors; return response()->json(Helper::paginateResources(DoctorResource::collection($doctors))); } /** * Show the form for creating a new resource. * @return Renderable */ public function create() { return view('internal::create'); } /** * Store a newly created resource in storage. * @param Request $request * @return Renderable */ public function store(Request $request) { // } /** * Show the specified resource. * @param int $id * @return Renderable */ public function show($id) { return view('internal::show'); } /** * Show the form for editing the specified resource. * @param int $id * @return Renderable */ public function edit($id) { return view('internal::edit'); } /** * Update the specified resource in storage. * @param Request $request * @param int $id * @return Renderable */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * @param int $id * @return Renderable */ public function destroy($id) { // } }