Dies mag eine einfache Frage sein, aber ich kann das nicht herausfinden. Ich versuche, einen Benutzer per E-Mail zu erreichen, indem ich:
$user = User::whereEmail($email)->get();
Dies gibt jedoch ein Array (der Dimension 1) von $ Benutzern zurück. Also, wenn ich den Namen bekommen will, muss ich tun $user[0]['first_name']
.
Ich habe versucht, limit(1)
oder take(1)
oder sogar zu verwenden, ->toArray()
aber es gab keinen Unterschied.
Was mache ich falsch?
Antworten:
Verwenden Sie einfach dies:
quelle
Sie können dies auch tun
Bevor Sie dies verwenden, müssen Sie die DB-Fassade in der Steuerung deklarieren. Setzen Sie einfach diese Zeile dafür
use Illuminate\Support\Facades\DB;
Jetzt können Sie eine Zeile damit erhalten
$getUserByEmail = DB::table('users')->where('email', $email)->first();
oder auch dadurch
$getUserByEmail = DB::select('SELECT * FROM users WHERE email = ?' , ['[email protected]']);
Dieser gibt ein Array mit nur einem Element zurück und während der erste ein Objekt zurückgibt. Vergiss das nicht.
Hoffe das hilft.
quelle
Mit Laravel Eloquent können Sie eine Zeile mit der
first()
Methode erhalten,Es gibt die erste Zeile der Tabelle zurück, wenn die
where()
Bedingung nicht gefunden wird. Andernfalls wird die erste übereinstimmende Zeile der angegebenen Kriterien angegeben.Syntax:
Model::where('fieldname',$value)->first();
Beispiel:
$user = User::where('email',$email)->first(); //OR //$user = User::whereEmail($email)->first();
quelle
Laravel 5.8
Wenn Sie nicht einmal eine ganze Zeile benötigen, können Sie mit der
value()
Methode einen einzelnen Wert aus einem Datensatz extrahieren . Diese Methode gibt den Wert der Spalte direkt zurück:$first_name = DB::table('users')->where('email' ,'me@mail,com')->value('first_name');
Dokumente überprüfen
quelle
Versuchen Sie es damit
$color = \App\Color::take(1)->first();
quelle
Laravel 5.2
$sql = "SELECT * FROM users WHERE email = $email"; $user = collect(\User::select($sql))->first();
oder
$user = User::table('users')->where('email', $email)->pluck();
quelle
$user = User::whereEmail($email)->first();
wie in der akzeptierten Antwort vorgeschlagen.Sie können dies auch verwenden
quelle