【问题标题】:How to get users group by date and user info using laravel eloquent?如何使用 laravel eloquent 按日期和用户信息获取用户分组?
【发布时间】:2019-01-22 06:18:37
【问题描述】:

我正在尝试从表中获取以下数据

  • 每个日期的注册用户数
  • 用户详情

我正在尝试以下脚本来获取它

$users = User::select(DB::raw('count(id) as agents, left(DATE(created_at),10) as registeredDate'))
->whereHas('roles', function($q){
    $q->where('name', '=', 'agent');
})
->offset($start)
->limit($limit)
->orderBy($order,'DESC')
->groupBy('registeredDate')
->get();

上面的查询返回每个日期的注册用户数

if($users){
    foreach($users as $r){
        $nestedData['agents'] = $r->agents;
        $nestedData['date'] = date('d M Y',strtotime($r->registeredDate));
        $data[] = $nestedData;
    }
}

但我也想在同一个查询中获取用户详细信息。我想要的输出是

'data' => [
    [
        "agents" => "13",
        "date" => "12 Jan 2019",
        "nested_data" => [
        [
            'full_name' => 'john',
            'status' => 'active',
            'email' => 'john@gmail.com',
        ],
        [
            'full_name' => 'John',
            'status' => 'active',
            'email' => 'john2@gmail.com',
        ]
        ]
    ]

]

有人可以指导我如何实现它。我很感激。谢谢

【问题讨论】:

  • 您无法获取所有用户数据,例如带有查询的 full_name 包含 groupBy()。
  • 你可能会得到所有行,这是因为full_name和status等字段是必需的,并使用foreach构建数组,并分配组的计数

标签: php laravel laravel-5


【解决方案1】:

将您的查询更改为:

$users = User::select(DB::raw('count(id) as agents, left(DATE(created_at),10) as registeredDate'))
->whereHas('roles', function($q){
    $q->where('name', '=', 'agent');
})
->offset($start)
->limit($limit)
->orderBy($order,'DESC')
->get();

将你的 foreach 循环更改为:

if($users){
    foreach($users as $user){
        $date = date('d M Y',strtotime($r->registeredDate));
        $data[$date]['date'] = $date;
        $data[$date]['nestedData'][] = ['first_name' => $user->first_name, 'status' => $user->status, 'email' => $user->email];
        $data[$date]['agents'] = count($data[$date]['nestedData']);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2020-01-06
    • 2014-05-22
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多