2017-03-02 4 views
1

Ich versuche eine Abfrage in Laravel zu erstellen, die überprüft, ob ein Benutzername in dem Datensatz existiert, wo E-Mail gleich $ email ist. Meine Tabelle heißt Benutzer.Laravel select where exists Abfrage

Ich brauche diese Abfrage, weil wenn ein Benutzer registriert, sie nur mit ihrer E-Mail-Adresse und Passwort registrieren und einen Benutzernamen zu einem späteren Zeitpunkt hinzufügen, so muss ich überprüfen, ob sie noch einen Benutzernamen hinzugefügt haben.

Ich habe die Dokumente hier überprüft: https://laravel.com/docs/5.4/queries und kann nicht verstehen, welche Abfrage ich verwenden muss, kann jemand helfen?

Antwort

1

Sie können dies tun:

$user = User::where('email', $email)->first(); 

if (empty($user->username)) { 
    // username is empty 
} else { 
    echo $user->username; 
} 
+1

Funktioniert perfekt, danke! – JL9

0

Ich denke, was Sie wollen ist etwas wie $id = DB::table('user')->where('email', $email)->whereNotNull('username')->value('id');. Das gibt entweder eine ID des Benutzers zurück, der dieser E-Mail entspricht und keinen Benutzernamen hat, oder es gibt null zurück. Haben Sie danach gefragt? Wenn nicht, kannst du klarstellen, was du meinst?

0

wenn Sie Existenz müssen überprüfen, ohne Benutzerdaten zu lesen, desto effizienter Weg ist:

$exists=User::where('email', $email)->whereNotNull('username')->exists(); 
if ($exists) { 
    //User exists. No other data about it. 
} 

es zu überprüfen und seine Daten nur lesen, wenn existiert:

$user = User::where('email', $email)->whereNotNull('username')->first(); 

if (!$user) { 
    //Not found with username, maybe exists without it 
} 

es trotzdem zu lesen und dann Daten prüfen:

$user = User::where('email', $email)->first(); 

if (!$user->username) { 
    //Does not exists even without username 
}else if (!$user->username) { 
    //Exists but without username 
}else{ 
    //Exists with username 
} 
Verwandte Themen