Heim  >  Fragen und Antworten  >  Hauptteil

Das Problem, dass die whereNotExists-Klausel in Laravel 8 Eloquent nicht korrekt verwendet wird, bleibt ungelöst

<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粉287726308P粉287726308389 Tage vor539

Antworte allen(1)Ich werde antworten

  • P粉670838735

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

    你尝试了以下内容吗:

    $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相结合。

    Antwort
    0
  • StornierenAntwort