Laravel Eloquent - Get one Row

9avjhtql  于 2023-10-22  发布在  其他
关注(0)|答案(7)|浏览(161)

这可能是一个简单的问题,但我不能解决这个问题。我正在尝试通过电子邮件获取用户,使用:

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

但这是返回一个$users的数组(维度为1)。所以如果我想得到这个名字,我必须做$user[0]['first_name']
我尝试使用limit(1)take(1),甚至使用->toArray(),但没有区别。
我做错了什么?

wribegjk

wribegjk1#

简单地使用这个:

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

xvw2m8pv2#

有很多种方法。
1.通过使用模型。范例:

User::where('column_name', 'value')->first();

在你使用它之前,你必须在控制器中声明DB facade。

use Illuminate\Support\Facades\DB;

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

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

或者说也被这个
3.

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

这一个返回一个数组,其中只有一个项目,而第一个返回一个对象。记住这点。
希望这对你有帮助。

kadbb459

kadbb4593#

使用Laravel Eloquent,你可以使用first()方法获取一行,
如果没有找到where()条件,则返回表的第一行,否则给出给定条件的第一个匹配行。

语法:

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

示例:

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

wsewodh24#

试试看

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

arknldoa5#

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

$first_name = DB::table('users')->where('email' ,'[email protected]')->value('first_name');

检查文档

snvhrwxg

snvhrwxg6#

在给定的代码中,简单地使用这个:

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

hk8txs487#

$getUserByEmail = DB::select("SELECT * FROM users WHERE email = $email"]);

相关问题