这可能是一个简单的问题,但我无法弄清楚这一点。我试图通过电子邮件获取用户:
$user = User::whereEmail($email)->get();
但这会返回$ users的数组(维度为1)。所以如果我想得到这个名字,我必须做$user[0]['first_name']
。
我尝试使用limit(1)
或take(1)
,甚至使用->toArray()
,但没有区别。
我做错了什么?
答案 0 :(得分:150)
只需使用:
$user = User::whereEmail($email)->first();
答案 1 :(得分:16)
你也可以这样做
在使用它之前,必须在控制器中声明数据库外观 简单地说这一行
use Illuminate\Support\Facades\DB;
现在你可以使用这个
获得一行$getUserByEmail = DB::table('users')->where('email', $email)->first();
或由此
$getUserByEmail = DB::select('SELECT * FROM users WHERE email = ?' , ['useremailaddress@email.com']);
这个返回一个只包含一个项目的数组,而第一个返回一个对象。记住这一点。
希望这有帮助。
答案 2 :(得分:0)
使用Laravel Eloquent,您可以使用first()
方法获得一行,
如果未找到where()
条件,则返回表的第一行,否则返回给定条件的第一匹配行。
语法:
Model::where('fieldname',$value)->first();
示例:
$user = User::where('email',$email)->first();
//OR
//$user = User::whereEmail($email)->first();
答案 3 :(得分:0)
laravel 5.8
如果您甚至不需要一整行,则可以使用value()
方法从记录中提取单个值。此方法将直接返回列的值:
$first_name = DB::table('users')->where('email' ,'me@mail,com')->value('first_name');
检查docs
答案 4 :(得分:0)
Laravel 5.2
$sql = "SELECT * FROM users WHERE email = $email";
$user = collect(\User::select($sql))->first();
或
$user = User::table('users')->where('email', $email)->pluck();
答案 5 :(得分:0)
尝试一下
\w
答案 6 :(得分:-12)
您也可以使用此
$user = User::where('Email' , $email)->get();