cari

Rumah  >  Soal Jawab  >  teks badan

Isu tidak menggunakan klausa whereNotExists dengan betul dalam Laravel 8 Eloquent masih tidak dapat diselesaikan

<p>Saya mempunyai dua jadual, satu jadual dengan pengguna berbeza dan satu lagi jadual invois dipanggil "factures" yang mempunyai userid kunci asing yang saya panggil client_id. Apa yang saya ingin dapatkan ialah bilangan pelanggan yang dibuat oleh pentadbir tertentu dan belum mempunyai invois lagi. Ini adalah kod yang saya cuba: </p> <pre class="brush:php;toolbar:false;">$clients = Pengguna::select('id') ->di mana([['created_by',$membre_id],['role','Client']]) ->orWhere([['updated_by',$membre_id],['role','Client']]) ->whereNotExists(function($query) { $query->select(DB::raw('client_id')) ->from('factures') ->where('created_by',$member_id); })->dapatkan();</pre> <p>Tetapi pertanyaan ini mengembalikan kepada saya semua pelanggan yang dibuat oleh $member_id, tiada pengecualian. Adakah terdapat apa-apa yang salah dengan pertanyaan saya? </p>
P粉287726308P粉287726308438 hari yang lalu606

membalas semua(1)saya akan balas

  • P粉670838735

    P粉6708387352023-09-06 11:10:07

    Sudahkah anda mencuba perkara berikut:

    $clients = User::select('id')
        ->where(function($query) use($member_id){
            $query->where([['created_by',$membre_id],['role','Client']])
                ->orWhere([['updated_by',$membre_id],['role','Client']])
        })
        ->whereNotExists(function($query) use($member_id){
            $query->select(DB::raw('client_id'))
                ->from('factures')
                ->where('created_by',$member_id);
        })
        ->get();
    }

    Jawapan ini hanya menggunakan OR条件,并且其结果与第三个条件的ANDgabung antara syarat pertama dan kedua (dicipta_oleh dan dikemas kini_oleh).

    balas
    0
  • Batalbalas