recherche

Maison  >  Questions et réponses  >  le corps du texte

Le problème de la non-utilisation correcte de la clause WhereNotExists dans Laravel 8 Eloquent reste non résolu

<p>J'ai deux tables, l'une est une table avec différents utilisateurs et l'autre est une table de factures appelée "factures" qui a un ID utilisateur de clé étrangère que j'appelle client_id. Ce que je veux obtenir, c'est le nombre de clients créés par un certain administrateur et qui n'ont pas encore de facture. Voici le code que j'ai essayé : </p> <pre class="brush:php;toolbar:false;">$clients = User::select('id') ->where([['created_by',$membre_id],['role','Client']]) ->ouOù([['updated_by',$membre_id],['role','Client']]) ->whereNotExists(fonction($requête) { $query->select(DB::raw('client_id')) ->from('factures') ->where('created_by',$member_id); })->get();</pre> <p>Mais cette requête me renvoie tous les clients créés par $member_id, sans exception. Y a-t-il un problème avec ma requête ? </p>
P粉287726308P粉287726308438 Il y a quelques jours605

répondre à tous(1)je répondrai

  • P粉670838735

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

    Avez-vous essayé ce qui suit :

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

    Cette réponse n'applique que la OR条件,并且其结果与第三个条件的ANDcombine entre la première et la deuxième conditions (created_by et update_by).

    répondre
    0
  • Annulerrépondre