Как мне написать запрос для этой логи c? - PullRequest
0 голосов
/ 02 мая 2020

В моей базе данных есть 4 таблицы.

  • Предложения
  • Партнеры
  • Клики
  • Конверсии

У меня есть страница, где пользователь может создавать отчеты, которые будут выходить из этих 4 таблиц. По сути, пользователь хочет видеть, сколько кликов и конверсий есть в любом из предложений, и как филиалы генерируют эти конверсии и клики.

Теперь снова у пользователя будет возможность группировать отчет на основе города, страны, штата, операционной системы, браузера и некоторых других полей, доступных в таблицах конверсий и кликов.

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

$offerReport =  Offers::with('currency')
                    ->withCount(['conversions as conversions' => function($q) use ($date_from, $date_to) {
                       $q->whereBetween('conversion_date_time', [$date_from, $date_to]);
                    }, 
                    'conversions as revenue'=> function($q) use ($date_from, $date_to) {
                       $q->whereBetween('conversion_date_time', [$date_from, $date_to])
                         ->select(DB::raw('SUM(conversion_network_revenue)'));
                    },
                    'conversions as payout'=> function($q) use ($date_from, $date_to) {
                        $q->whereBetween('conversion_date_time', [$date_from, $date_to])
                          ->select(DB::raw('SUM(conversion_affiliate_payout)'));
                       }
                    ])
                    ->whereHas('clicks',function($q) use ($date_from, $date_to) {
                       $q->whereBetween('created_at', [$date_from, $date_to]);
                    });

                    //withCount is taking time
                    $offerReport = $offerReport->withCount(['clicks' => function($q) use ($date_from, $date_to) {
                           $q->whereBetween('created_at', [$date_from, $date_to]);
                       }])
                    ->paginate(15);

Теперь есть некоторые проблемы, когда пользователь хочет получать динамические отчеты c. С помощью этого запроса groupBy не работает с филиалами, ОС, полями браузера в таблицах «Преобразования и клики», поскольку здесь «Предложения» - это основная модель.

Как мне написать запрос, чтобы я мог создавать отчеты со всеми возможными опции?

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