Laravel Выберите Raw в Moloquent Query - PullRequest
1 голос
/ 06 марта 2020

Ранее я использовал Mysql для базы данных. Как только данные продолжают расти, я пытаюсь перейти на MongoDB. Я использую jenssegers/laravel-mongodb только для аналитики. Я обнаружил, что трудно получить данные, если я хочу группировать по месяцам, дням, годам и считать их.

Mysql запрос

$query = Model::query()
  ->selectRaw('api_module, MONTH(created_at) as trans, Count(*) as counter'); 
  ->whereBetween('created_at', [$start, $end])
  ->whereNotNull('api_module')
  ->groupBy('trans', 'api_module')
  ->orderBy('api_module')
  ->get(['api_module', 'tran', 'counter']);

Данные

{ 
    "_id" : ObjectId("5e61f67d31b9ad636154396f"), 
    "fingerprint" : "hy9mZ959ovg42898pncA1VPhbqr6gzdQNKDbSVBix8IajZ9yY", 
    "device_id" : 16, 
    "device_uuid" : "aaaab-123123", 
    "api_url" : "http://example.test:8000/api/news", 
    "api_id" : null, 
    "api_method" : "GET", 
    "ip_address" : "127.0.0.1", 
    "user_agent" : "PostmanRuntime/7.22.0", 
    "api_module" : "news", 
    "api_module_studly" : "News", 
    "origin" : 1, 
    "request_header" : "ABC", 
    "request_body" : "ABCD", 
    "created_at" : "2020-03-06 15:06:37", 
    "updated_at" : "2020-03-06 15:06:37"
}

Я понятия не имею, чтобы преобразовать его в агрегированную форму json, если я хочу использовать Model::raw() , Было бы очень полезно, если бы вы могли помочь преобразовать его из mysql в moloquent

...