Example #1
0
 function article_per_author()
 {
     ///////////
     // Query //
     ///////////
     $query[] = ['$match' => ['published_at' => ['$lte' => \Carbon\Carbon::now()->format('Y-m-d')]]];
     $query[] = ['$group' => ['_id' => '$user_id', 'last_created_at' => ['$first' => '$created_at'], 'last_published_at' => ['$first' => '$published_at'], 'count' => ['$sum' => 1]]];
     //////////////////////////////
     // 			Get Result 		//
     //////////////////////////////
     $data = [];
     $total_article = Article::raw(function ($collection) use($query) {
         return $collection->aggregate($query);
     });
     foreach ($total_article as $key => $value) {
         $new = User::find($value['_id']);
         if ($new) {
             $new['total_article'] = $value['count'];
             $new['last_created_at'] = $value['last_created_at'];
             $new['last_published_at'] = $value['last_published_at'];
             $data[] = $new->toArray();
         }
     }
     return response()->json(JSend::success(['count' => count($data), 'data' => $data])->asArray())->setCallback($this->request->input('callback'));
 }