Rumah  >  Soal Jawab  >  teks badan

Cari rentetan dalam berbilang lajur jadual hubungan menggunakan Laravel whereRelation

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粉590929392P粉590929392187 hari yang lalu236

membalas semua(1)saya akan balas

  • P粉511749537

    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 . '%'
        );
    });
    

    balas
    0
  • Batalbalas