在Laravel中$user = Auth::user()
返回当前登录的用户。从这个用户我想只检索几列到键值数组。我有什么选择?
示例:
$user = Auth::user()->fetch('id', 'username', 'email');
应该给我
[
"id" => 1,
"username" => "John Doe",
"email" => "john@doe.example"
]
我已经搜索了Eloquent文档,但还没找到我正在寻找的功能。我错过了吗?这样的功能不存在吗?
答案 0 :(得分:5)
如果您的主要目标是获取数组而不是对象,并且数组中的额外字段不是问题,因为您的必需字段存在,您可以将用户模型转换为数组:
Auth::user()->toArray();
(array) Auth::user();
但是,如果您需要输出只有这3个属性 - 您必须进行一些额外的编码。我建议在User模型中创建一个包含公开字段列表的属性。然后重写toArray()方法(或创建另一个方法),只返回列表中的字段。
答案 1 :(得分:3)
Auth::user()
为您提取用户对象,因此您不再使用Eloquent并且无法使用Eloquent方法。
模型上没有返回给定属性数组的方法(参考:https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Model.html),但您可以在User
模型上创建一个,例如:< / p>
function myData($keys) {
return array_intersect_key($this->toArray(), array_flip($keys))
}
然后您可以使用$user->myData(['id', 'username', 'keys'])