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')); }