/** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $this->repository->addAvailableInclude('from_user', ['name', 'avatar']); $this->repository->addAvailableInclude('reply', ['created_at']); $this->repository->addAvailableInclude('topic', ['title']); $data = $this->repository->autoWith()->autoWithRootColumns(['id', 'type', 'body', 'topic_id', 'reply_id', 'created_at'])->paginate(per_page()); return $this->response()->paginator($data, new NotificationTransformer()); }
/** * 所有帖子列表接口的通用部分. * * @return \Dingo\Api\Http\Response */ protected function commonIndex() { FilterManager::addFilter('newest'); $this->registerListApiIncludes(); $data = $this->topics->autoWith()->autoWithRootColumns(['id', 'title', 'is_excellent', 'reply_count', 'updated_at', 'created_at', 'vote_count'])->paginate(per_page()); return $this->response()->paginator($data, new TopicTransformer()); }
/** * 通过 attentions 或 favorites 查找帖子. * * @param $table * @param $user_id * @param $columns * * @return Paginator */ public function getTopicsWithPaginatorBy($table, $user_id, $columns = ['*']) { $paginator = DB::table($table)->orderBy('created_at', 'desc')->where(compact('user_id'))->paginate(per_page(), ['topic_id']); if ($paginator->count() === 0) { return $paginator; } $topic_ids = array_pluck($paginator->items(), 'topic_id'); $topics = $this->whereInAndOrderBy($topic_ids)->autoWith()->autoWithRootColumns($columns)->get(); $items = (new ReflectionObject($paginator))->getProperty('items'); $items->setAccessible(true); $items->setValue($paginator, $topics); return $paginator; }
/** * 获取指定用户的回复. * * @param $user_id * * @return \Dingo\Api\Http\Response */ public function indexByUserId($user_id) { $this->replies->addAvailableInclude('user', ['name', 'avatar']); $data = $this->replies->byUserId($user_id)->skipPresenter()->autoWith()->autoWithRootColumns(['id', 'vote_count'])->paginate(per_page()); return $this->response()->paginator($data, new ReplyTransformer()); }
/** * 所有帖子列表接口的通用部分. * * @return \Dingo\Api\Http\Response */ protected function commonIndex() { $this->registerListApiIncludes(); $data = $this->repository->autoWith()->skipPresenter()->autoWithRootColumns(['id', 'title', 'is_excellent', 'reply_count', 'updated_at', 'created_at'])->paginate(per_page()); return $this->response()->paginator($data, new TopicTransformer()); }