Как получить группы пользователей по дате и информации о пользователях с помощью laravel eloquent? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь получить следующие данные из таблицы

  • Количество зарегистрированных пользователей за каждую дату
  • Данные пользователя

Я пытаюсь выполнить следующий скриптчтобы получить это

$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',
        ]
        ]
    ]

]

Может кто-нибудь любезно подсказать мне, как этого добиться.Я хотел бы оценить.Спасибо

1 Ответ

0 голосов
/ 22 января 2019

Измените ваш запрос следующим образом:

$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']);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...