Laravel Eloquent - 获得一排

时间:2014-05-29 03:59:03

标签: laravel eloquent

这可能是一个简单的问题,但我无法弄清楚这一点。我试图通过电子邮件获取用户:

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

但这会返回$ users的数组(维度为1)。所以如果我想得到这个名字,我必须做$user[0]['first_name']

我尝试使用limit(1)take(1),甚至使用->toArray(),但没有区别。

我做错了什么?

7 个答案:

答案 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();