• follow


    public function follow(Request $request, FeedModel $model, FeedRepository $repository)
        {
            if (is_null($user = $request->user('api'))) {
                abort(401);
            }
    
            $limit = $request->query('limit', 15);
            $after = $request->query('after');
            $feeds = $model->leftJoin('user_follow', function ($join) use ($user) {
                $join->where('user_follow.user_id', $user->id);
            })
                ->whereDoesntHave('blacks', function ($query) use ($user) {
                    $query->where('user_id', $user);
                })
                ->where(function ($query) use ($user) {
                    $query->whereColumn('feeds.user_id', '=', 'user_follow.target')
                        ->orWhere('feeds.user_id', $user->id);
                })
                ->with([
                    'user' => function ($query) {
                        return $query->withTrashed();
                    },
                    'topics' => function ($query) {
                        return $query->select('id', 'name');
                    },
                    'user.certification',
                    'pinnedComments' => function ($query) {
                        return $query->with([
                            'user',
                            'user.certification',
                        ])
                        ->where('expires_at', '>', new Carbon)
                        ->orderBy('amount', 'desc')
                        ->orderBy('created_at', 'desc');
                    },
                ])
                ->when((bool) $after, function ($query) use ($after) {
                    return $query->where('feeds.id', '<', $after);
                })
                ->distinct()
                ->select('feeds.*')
                ->orderBy('feeds.id', 'desc')
                ->limit($limit)
                ->get();
    
            return $feeds->map(function (FeedModel $feed) use ($repository, $user) {
                $feed->feed_view_count += 1;
                $feed->hot = $feed->makeHotValue();
                $feed->save();
    
                $repository->setModel($feed);
                $repository->images();
                $repository->format($user->id);
                $repository->previewComments();
    
                $feed->has_collect = $feed->collected($user->id);
                $feed->has_like = $feed->liked($user);
    
                return $feed;
            });
        }
  • 相关阅读:
    ruby基础语法
    几种移动开发技术的比较和选型
    iOS中UIWebView与其中网页的javascript的交互
    android混合开发,webview的java与js互操作
    在学Go语言
    从11对战平台获取玩家数据进行分析
    本地json文件的编辑器,node-webkit开发的exe程序
    51单片机实现多模式计算器
    如何得到个性化banner
    php文件下载服务器代码
  • 原文地址:https://www.cnblogs.com/sgm4231/p/10572810.html
Copyright © 2020-2023  润新知