Использование Distinct и group by laravel Mysql - PullRequest
0 голосов
/ 13 июня 2018

У меня есть таблица requests с полями

`id` `user_id` `status` `url` `price` `date`

и таблица people с полями

`id` `name` `number` `password` `nickname`

Я пытаюсь сгруппировать все запросы по каждой дате и подсчитать, сколькозапрос каждый день с этим запросом:

$data['dates'] = RequestModel::orderBy('date', 'desc')
        ->groupBy(DB::raw("DATE_FORMAT(date, '%Y-%m-%d')"))
        ->take(2)
        ->get(array(
            DB::raw('Date(date) as date'),
            DB::raw('COUNT(*) as requests'),
        ));

это дает такие данные:

"dates": [
{
    "date": "2018-06-13",
    "requests": 230
},
{
    "date": "2018-06-12",
    "requests": 399
}]

Проблема в том, что когда пользователь создает новый запрос в people таблица создает новыйпользователь с таким же number и отличным nickname.как это:

`id` `name` `number` `password` `nickname`
 1   jack    555845   pass       555845-1
 2   jack    555845   pass       555845-2

Я хочу считать запросы с разными номерами пользователей и не знаю, как это сделать.помоги мне, если сможешь

1 Ответ

0 голосов
/ 13 июня 2018

Я нашел решение

$data['requests'] = RequestModel::join(env('DB_DATABASE_2').'.people', env('DB_DATABASE_2').'.people.id', '=', env('DB_DATABASE_2').'.requests.user_id')
    ->where('requests.date', '>', \Carbon\Carbon::now('Asia/Tbilisi')->subDays(30))
    ->orderBy('requests.id', 'DESC')
    ->distinct()
    ->groupBy('people.number')
    ->get();

    $grouped = $data['requests']->groupBy(function($req){
        return explode(' ', $req->date)[0];
    });

    $data['dates'] = [];
    $i=0;
    foreach($grouped as $key => $date){
        $data['dates'][$i]['date'] = $key;
        $data['dates'][$i]['requests'] = sizeof($date);
        $i++;
    }

, используя коллекцию laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...