409 Stimmen

Laravel Überprüfen, ob ein Datensatz vorhanden ist

Ich bin neu bei Laravel. Wie finde ich heraus, ob ein Datensatz vorhanden ist?

$user = User::where('email', '=', Input::get('email'));

Was kann ich hier tun, um zu sehen, ob $user einen Datensatz hat?

13voto

Nadeem Qasmi Punkte 2147

Laravel 5.6.26v

um den vorhandenen Datensatz über den Primärschlüssel (E-Mail oder ID) zu finden

    $user = DB::table('users')->where('email',$email)->first();

dann

      if(!$user){
             // Benutzer wurde nicht gefunden
      }
      if($user){
             // Benutzer gefunden
      }

include " use DB " und der Tabellenname Benutzer wird durch die obige Abfrage von Benutzer in Benutzer geändert

12voto

Sharryy Punkte 94

Es ist etwas spät, aber es könnte jemandem helfen, der versucht, User::find()->exists() zur Überprüfung des Vorhandenseins von Datensätzen zu verwenden, da Laravel unterschiedliches Verhalten für die Methoden find() und where() zeigt. Wenn Sie die E-Mail als primären Schlüssel betrachten, lassen Sie uns die Situation genauer betrachten.

$result = User::find($email)->exists();

Wenn ein Benutzerdatensatz mit dieser E-Mail vorhanden ist, wird true zurückgegeben. Der verwirrende Teil ist jedoch, dass bei Nichtvorhandensein eines Benutzers mit dieser E-Mail ein Fehler auftritt. z.B.

Ruft eine existierende Funktion auf einem Nicht-Objekt auf.

Aber der Fall ist bei where() anders.

$result = User::where("email", $email)->exists();

Die obige Klausel gibt true zurück, wenn der Datensatz vorhanden ist, und false, wenn der Datensatz nicht vorhanden ist. Verwenden Sie also immer where() zur Überprüfung des Datensatzvorhandenseins und nicht find(), um Fehler mit NULL zu vermeiden.

9voto

doncadavona Punkte 6297
if (User::where('email', 'user@email.com')->first()) {
    // Es existiert
} else {
    // Es existiert nicht
}

Verwenden Sie first(), nicht count(), wenn Sie nur auf das Vorhandensein überprüfen müssen.

first() ist schneller, weil es nach einem einzelnen Treffer sucht, während count() alle Treffer zählt.

9voto

A. Zaman Punkte 411

Dies überprüft, ob die angeforderte E-Mail in der Benutzertabelle existiert:

if (User::where('email', $request->email)->exists()) {
   // E-Mail existiert in der Benutzertabelle
}

3voto

Arian Tron Punkte 39

Ich habe das gelöst, indem ich die empty() Funktion verwendet habe:

$user = User::where('email', Input::get('email'))->get()->first();
//zum Beispiel:
if (!empty($user))
    User::destroy($user->id);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X