Eloquent - 从登录用户获取特定列

Bas*_*saa 1 php mysql orm laravel eloquent

在Laravel中$user = Auth::user()返回当前登录的用户.从这个用户我想只检索几列到键值数组.我有什么选择?

例:

$user = Auth::user()->fetch('id', 'username', 'email');
Run Code Online (Sandbox Code Playgroud)

应该给我

[
    "id" => 1,
    "username" => "John Doe",
    "email" => "john@doe.example"
]
Run Code Online (Sandbox Code Playgroud)

我搜索了Eloquent文档,但还没有找到我正在寻找的功能.我错过了吗?这样的功能不存在吗?

Den*_*nko 5

如果您的主要目标是获取数组而不是对象,并且数组中的额外字段不是问题,因为您需要的字段存在,您可以将用户模型转换为数组:

Auth::user()->toArray();
(array) Auth::user();
Run Code Online (Sandbox Code Playgroud)

但是,如果您需要输出只有这3个属性 - 您必须进行一些额外的编码.我建议在User模型中创建一个包含公开字段列表的属性.然后重写toArray()方法(或创建另一个方法),只返回列表中的字段.