Isu tidak menggunakan klausa whereNotExists dengan betul dalam Laravel 8 Eloquent masih tidak dapat diselesaikan
P粉287726308
P粉287726308 2023-09-05 16:08:35
0
1
636
<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粉287726308
P粉287726308

membalas semua(1)
P粉670838735

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).

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan