Rumah > Soal Jawab > teks badan
Saya mempunyai hubungan dengan model spatial,
public function user() { return $this->belongsTo(User::class)->withTrashed(); }
Dalam pengawal saya, saya ingin mencari rentetan daripada lajur "nama_pertama" dan "nama_akhir" dalam jadual "pengguna".
Tetapi saya tidak menemui sintaks untuk menulis keadaan "atau" di whereRelation.
$query = new Space(); $query = $query->with('user')->whereRelation('user', 'first_name', 'like', '%' . $request->search . '%');
Bagaimana untuk mencari rentetan dalam berbilang lajur jadual hubungan menggunakan whereRelation?
P粉5117495372024-03-20 16:38:40
Pilihan 1. Anda boleh mencari dari dua medan secara berasingan:
Space::with('user')->whereHas('user', function ($query) use ($request) { $query->where('first_name', 'LIKE', '%' . $request->search . '%') ->orWhere('last_name', 'LIKE', '%' . $request->search . '%'); });
Pilihan 2. Saya rasa apa yang anda mahukan ialah menggabungkan dua medan bersama-sama (dengan ruang di antara) dan kemudian bandingkan carian anda dengan medan itu:
use Illuminate\Support\Facades\DB; // ... Space::with('user')->whereHas('user', function ($query) use ($request) { $query->where( DB::raw('CONCAT(first_name, " ", last_name)'), 'LIKE', '%' . $request->search . '%' ); });