Das Problem, dass die whereNotExists-Klausel in Laravel 8 Eloquent nicht korrekt verwendet wird, bleibt ungelöst
P粉287726308
P粉287726308 2023-09-05 16:08:35
0
1
641
<p>Ich habe zwei Tabellen, eine ist eine Tabelle mit verschiedenen Benutzern und die andere ist eine Rechnungstabelle namens „factures“, die eine Fremdschlüssel-Benutzer-ID hat, die ich client_id nenne. Was ich erhalten möchte, ist die Anzahl der Kunden, die von einem bestimmten Administrator erstellt wurden und noch keine Rechnung haben. Dies ist der Code, den ich ausprobiert habe: </p> <pre class="brush:php;toolbar:false;">$clients = User::select('id') ->where([['created_by',$membre_id],['role','Client']]) ->orWhere([['updated_by',$membre_id],['role','Client']]) ->whereNotExists(function($query) { $query->select(DB::raw('client_id')) ->von('Fakturen') ->where('created_by',$member_id); })->get();</pre> <p>Aber diese Abfrage gibt mir alle von $member_id erstellten Kunden zurück, ohne Ausnahmen. Stimmt etwas mit meiner Anfrage nicht? </p>
P粉287726308
P粉287726308

Antworte allen(1)
P粉670838735

你尝试了以下内容吗:

$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();
}

此答案仅在第一和第二个条件(created_by和updated_by)之间应用了OR条件,并且其结果与第三个条件的AND相结合。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage