【发布时间】:2019-12-02 19:22:03
【问题描述】:
一个用户可以有多个角色,我想以逗号分隔的值显示我的角色,例如
"role": "world","hello","john"
但目前我正在针对每个用户获取角色,这会在我的列表中创建重复用户,因为一个用户可以拥有多个角色。如果我对一个用户有 5 个角色,它将针对一个用户创建 5 个列表,并且在获取时会有用户电子邮件和 id 重复,我想避免:
这是我的控制器代码:
public function getAllUsers()
{
$users = DB::table('users')
->leftjoin('user_basic_info', 'users.id', '=', 'user_basic_info.user_id')
->leftjoin('roles', 'users.id', '=', 'roles.created_by')
->select('users.id', 'user_basic_info.*','roles.name AS role','users.email', 'users.created_at', 'users.updated_at','users.created_by')
->where('users.deletedAt', '=', null)
->where('roles.deletedAt', '=', null)
->orderBy('users.id', 'desc')->get();
return response([
'status' => true,
'message' => "All Users",
'total' => count($users),
'data' => $users
], 200);
}
我可以用 eloquent 做到这一点,但我的反应会改变。目前我正在收到回复:
{
"id": 14,
"first_name": "farhan",
"middle_name": "ahmed",
"role": "world",
"email": "shahzad_h12495@ovadamd.com"
},
{ {
"id": 14,
"first_name": "farhan",
"middle_name": "ahmed",
"role": "hello",
"email": "shahzad_h12495@ovadamd.com"
},
您可以看到电子邮件和 id 重复,我想要一条针对 id 14 的记录,并以逗号分隔,如下所示:
"id": 14,
"first_name": "farhan",
"middle_name": "ahmed",
"role": "hello","world",
"email": "shahzad_h12495@ovadamd.com"
如何使用查询架构实现这一点?
【问题讨论】:
-
您能否检查一下该响应,因为它看起来对我无效。你真的得到回应了吗
-
是的,我收到了回复
-
忽略名字和姓氏相同的值,但我得到的响应正是我是共享的
-
显示对 jsonlint.com 的响应 你和我一样收到错误吗?
-
我分享了屏幕截图,兄弟我刚刚向你展示了 2 个对象,我的 json 中有 40 多条记录
标签: php json laravel query-builder