Laravel Eloquent - 获取一行

Posted

技术标签:

【中文标题】Laravel Eloquent - 获取一行【英文标题】:Laravel Eloquent - Get one Row 【发布时间】:2014-07-18 11:52:15 【问题描述】:

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

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

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

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

我做错了什么?

【问题讨论】:

您想从查询结果中获取一行?或者你只想要数据库查询中的一行? 【参考方案1】:

只需使用这个:

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

【讨论】:

【参考方案2】:

你也可以这样做

在你使用它之前,你必须在控制器中声明 DB 门面 简单地把这一行放在那个

use Illuminate\Support\Facades\DB;

现在你可以用这个得到一行

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

也可以这样

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

这个返回一个数组,其中只有一个项目,而第一个返回一个对象。请记住这一点。

希望这会有所帮助。

【讨论】:

【参考方案3】:

使用 Laravel Eloquent,您可以使用 first() 方法获得一行,

如果没有找到where() 条件,则返回表的第一行,否则给出给定条件的第一行匹配。

语法:

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

示例:

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

【讨论】:

【参考方案4】:

laravel 5.8

如果您甚至不需要整行,您可以使用value() 方法从记录中提取单个值。该方法会直接返回该列的值:

$first_name = DB::table('users')->where('email' ,'me@mail,com')->value('first_name');

检查docs

【讨论】:

【参考方案5】:

Laravel 5.2

$sql = "SELECT * FROM users WHERE email = $email";

$user = collect(\User::select($sql))->first();

$user = User::table('users')->where('email', $email)->pluck();

【讨论】:

这会将所有用户从您的数据库加载到 Web 应用程序服务器的内存中,如果您的用户数据超过服务器 RAM 中的存储量,可能会导致它崩溃。您只需要一个用户,因此无需在所有用户上浪费内存。指示数据库仅按照接受的答案中的建议向您发送$user = User::whereEmail($email)->first(); 的第一个用户。【参考方案6】:

试试看

$color = \App\Color::take(1)->first();

【讨论】:

【参考方案7】:

如果您需要查找任何特定字段,您可以使用

$user = User::where('email',$email)->first(); 

$user = User::where('username',$username)->first(); 

$user = User::where('id',$id)->first(); 

【讨论】:

以上是关于Laravel Eloquent - 获取一行的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent ORM - 获取第一个和第三个表数据

Laravel Eloquent ORM - 获取第一和第三表数据

Laravel Eloquent—基本概念用法

如何使用 Laravel 的 Eloquent/Fluent 将每一行设置为相同的值?

使用 Mockery Eloquent 模型模拟 Laravel

如何使用 Laravel(Eloquent 的)地图收集功能重构 php foreach