web-dev-qa-db-fra.com

Laravel Eloquent - Obtenir une ligne

Cela pourrait être une question simple, mais je ne peux pas comprendre cela. J'essaie d'obtenir un utilisateur par courrier électronique en utilisant:

$user = User::whereEmail($email)->get();

Mais ceci renvoie un tableau (de dimension 1) de $ utilisateurs. Donc, si je veux obtenir le nom, je dois faire $user[0]['first_name'].

J'ai essayé d'utiliser limit(1) ou take(1), ou même d'utiliser ->toArray(), mais il n'y avait pas de différence.

Qu'est-ce que je fais mal?

65
Kousha

tilisez simplement ceci:

$user = User::whereEmail($email)->first();
159
Ganesh Jogam

Vous pouvez le faire aussi

Avant de l’utiliser, vous devez déclarer la façade de la base de données dans le contrôleur.

use Illuminate\Support\Facades\DB;

Maintenant, vous pouvez obtenir une ligne en utilisant cette

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

ou par là aussi

$getUserByEmail = DB::select('SELECT * FROM users WHERE email = ?' , ['[email protected]']);

Celui-ci retourne un tableau avec un seul élément et le premier renvoie un objet. Garde cela à l'esprit.

J'espère que cela t'aides.

18
Koushik Das

En utilisant Laravel Eloquent, vous pouvez obtenir une ligne en utilisant la méthode first(),

elle retourne la première ligne de la table si la condition where() n'est pas trouvée, sinon elle donne la première ligne correspondante du critère donné.

Syntaxe:

Model::where('fieldname',$value)->first();

Exemple:

$user = User::where('email',$email)->first(); 
//OR
//$user = User::whereEmail($email)->first();
0
Haritsinh Gohil