Heim > Fragen und Antworten > Hauptteil
Ich habe versucht, einen Suchcode zu schreiben, und das ist mein Code:
$services = Service::query()->with('plans')->latest(); if ($request->service_name) { $services = $services->whereRaw("CONVERT(JSON_EXTRACT(name, '$.ar') using 'utf8') LIKE '%$request->service_name%' ") ->orWhereRaw("CONVERT(JSON_EXTRACT(name, '$.en') using 'utf8') LIKE '%$request->service_name%' ") ->orWhereRaw("CONVERT(JSON_EXTRACT(name, '$.he') using 'utf8') LIKE '%$request->service_name%' "); } if ($request->plan_name) { $plan_name = $request->plan_name; $services = $services->whereHas('plans', function ($q) use ($plan_name) { $q->where('name->en','Like','%'.$plan_name.'%'); }); } return $services->get();
Aber wenn ich plan_name in der Anfrage sende, filtert der Code nach Dienstname statt nach Planname
Ich habe versucht, Daten nach Plannamen zu filtern, als ich den Plannamencode in der Anfrage gesendet habe, aber es funktioniert nicht
P粉8074716042024-02-27 13:45:32
if ($request->service_name && !$request->plan_name) { // When only service name provided $services = $services->whereRaw("CONVERT(JSON_EXTRACT(name, '$.ar') using 'utf8') LIKE '%$request->service_name%' ") ->orWhereRaw("CONVERT(JSON_EXTRACT(name, '$.en') using 'utf8') LIKE '%$request->service_name%' ") ->orWhereRaw("CONVERT(JSON_EXTRACT(name, '$.he') using 'utf8') LIKE '%$request->service_name%' "); } if ($request->plan_name && !$request->service_name) { // When only plan name provided $plan_name = $request->plan_name; $services = $services->whereHas('plans', function ($q) use ($plan_name) { $q->where('name->en','Like','%'.$plan_name.'%'); }); }