2017-02-23 22 views
-5

Ich benutze Laravel 5.2.45Laravel überprüfen, ob Benutzer existiert

Ich versuche, einen neuen Benutzer für meine Anwendung zu erstellen. Bevor der Benutzer erstellt wird, muss ich überprüfen, ob es einen Benutzer mit dem gleichen Namen, Nachnamen und Geburtstag gibt. Wie kann ich es in Laravel tun?

+0

Von d oing Datenbankabfragen, um zu sehen, ob diese Werte in Ihrer Datenbank sind. Siehe [Abfrage-Builder-Dokumente] (https://laravel.com/docs/5.2/abfragen). Ihre Frage ist ziemlich einfach und wird wahrscheinlich geschlossen, da Sie keinen Code haben, der anzeigt, dass Sie dies selbst versucht haben. –

+0

laravel bietet beispielsweise 'unique' an, um zu prüfen, ob bereits Daten in der Datenbank vorhanden sind. Aber ich suche keinen Eintrag. 3 Einträge müssen übereinstimmen, um einen Fehler zu geben. Ich weiß, dass ich eine Datenbankabfrage machen kann und überprüfe, ob es bereits einen vorhandenen Benutzer gibt, aber dachte, dass es einen besseren Weg gibt, es in Laravel zu tun – hatemjapo

Antwort

5

Benutzer mit dem gleichen Namen, Vornamen und Geburtstag

$duplicate_user = \DB::table('users') 
    ->where('name', 'LIKE', $new_name) 
    ->where('surname', 'LIKE', $new_surname) 
    ->where('birthday', '=', $new_birthday) 
    ->first(); 

if($duplicate_user) { 
    return response('This user already exists', 422); 
} 
0

Als Laravel Validation Docs sagt

einzigartig: Tabelle, Spalte, mit der Ausnahme, idColumn

Validator::extend('and_unique', function($attribute, $value, $parameters, $validator) { 
$result = DB::table($parameters[0])->where(function($query) use ($attribute, $value, $parameters) { 
    $query->where($attribute, '=', $value) // where name = value 
     ->orWhere($parameters[1]), '=', $value); // where surname = value 
     ->orWhere($parameters[2]), '=', $value); // where birthday = value 
})->first(); 

return $result ? false : true; 
}); 

'name' => 'required|and_unique:users,surname,birthday' 
+0

Das wird nicht funktionieren. Wenn einer der Namen, Nachnamen oder Geburtstag genommen wird, wird dies einen Fehler geben. – hatemjapo

0
$siteUser = new SiteUser; 

foreach (['birth_date', 'first_name', 'last_name'] as $key) { 
$siteUser->$key = $request->$key; 
} 
+1

Können Sie Ihrer Antwort einige Details hinzufügen? Warum sollte OP diesen Code verwenden? – Jer

Verwandte Themen