zoukankan      html  css  js  c++  java
  • laravel 不理解的call方法

    返回结果:

     原来是调用同控制器的这四个方法之一...vendorzhiyicxplus-questionsrcAPI2ControllersUserQuestionController.php

    /**
         * Get all.
         *
         * @author bs<414606094@qq.com>
         * @param  Request $request
         * @param  Question $questionModel
         * @return Collection
         */
        public function all(Request $request, QuestionModel $questionModel, int $user_id)
        {
            $limit = $request->query('limit', 15);
            $after = $request->query('after', 0);
            $questions = $questionModel->with('user')
            ->where('user_id', $user_id)
            ->when($after, function ($query) use ($after) {
                return $query->where('id', '<', $after);
            })
            ->limit($limit)
            ->orderBy('id', 'desc')
            ->get();
    
            return $questionModel->getConnection()->transaction(function () use ($questions, $user_id) {
                return $questions->map(function ($question) use ($user_id) {
                    $question->answer = $question->answers()
                        ->with('user')
                        ->orderBy('id', 'desc')
                        ->first();
    
                    if ($question->answer) {
                        if ($question->answer->anonymity && $question->answer->user_id !== $user_id) {
                            $question->answer->addHidden('user');
                            $question->answer->user_id = 0;
                        }
                        $question->answer->liked = (bool) $question->answer->liked($user_id);
                        $question->answer->collected = (bool) $question->answer->collected($user_id);
                        $question->answer->rewarded = (bool) $question->answer->rewarders()->where('user_id', $user_id)->first();
                    }
    
                    return $question;
                });
            });
        }
    
        /**
         * Get invitation questions.
         *
         * @author bs<414606094@qq.com>
         * @param  Request $request
         * @param  Question $questionModel
         * @return Collection
         */
        public function invitation(Request $request, QuestionModel $questionModel, int $user_id)
        {
            $limit = $request->query('limit', 15);
            $after = $request->query('after', 0);
            $questions = $questionModel->with('user')
            ->whereExists(function ($query) {
                return $query->from('question_invitation')->whereRaw('question_invitation.question_id = questions.id');
            })
            ->where('user_id', $user_id)
            ->when($after, function ($query) use ($after) {
                return $query->where('id', '<', $after);
            })
            ->orderBy('questions.id', 'desc')
            ->limit($limit)
            ->get();
    
            return $questionModel->getConnection()->transaction(function () use ($questions, $user_id) {
                return $questions->map(function ($question) use ($user_id) {
                    $question->answer = $question->answers()
                        ->with('user')
                        ->orderBy('id', 'desc')
                        ->first();
    
                    if ($question->answer) {
                        if ($question->answer->anonymity && $question->answer->user_id !== $user_id) {
                            $question->answer->addHidden('user');
                            $question->answer->user_id = 0;
                        }
                        $question->answer->liked = (bool) $question->answer->liked($user_id);
                        $question->answer->collected = (bool) $question->answer->collected($user_id);
                        $question->answer->rewarded = (bool) $question->answer->rewarders()->where('user_id', $user_id)->first();
                    }
    
                    return $question;
                });
            });
        }
    
        /**
         * Get reward questions.
         *
         * @author bs<414606094@qq.com>
         * @param  Request $request
         * @param  Question $questionModel
         * @return Collection
         */
        public function reward(Request $request, QuestionModel $questionModel, int $user_id)
        {
            $limit = $request->query('limit', 15);
            $after = $request->query('after', 0);
            $questions = $questionModel->with('user')
            ->where('user_id', $user_id)
            ->where('amount', '>', 0)
            ->whereNotExists(function ($query) {
                return $query->from('question_invitation')->whereRaw('question_invitation.question_id = questions.id');
            })
            ->when($after, function ($query) use ($after) {
                return $query->where('id', '<', $after);
            })
            ->limit($limit)
            ->orderBy('questions.id', 'desc')
            ->get();
    
            return $questionModel->getConnection()->transaction(function () use ($questions, $user_id) {
                return $questions->map(function ($question) use ($user_id) {
                    $question->answer = $question->answers()
                        ->with('user')
                        ->orderBy('id', 'desc')
                        ->first();
    
                    if ($question->answer) {
                        if ($question->answer->anonymity && $question->answer->user_id !== $user_id) {
                            $question->answer->addHidden('user');
                            $question->answer->user_id = 0;
                        }
                        $question->answer->liked = (bool) $question->answer->liked($user_id);
                        $question->answer->collected = (bool) $question->answer->collected($user_id);
                        $question->answer->rewarded = (bool) $question->answer->rewarders()->where('user_id', $user_id)->first();
                    }
    
                    return $question;
                });
            });
        }
    
        /**
         * Get other questions.
         *
         * @author bs<414606094@qq.com>
         * @param  Request $request
         * @param  Question $questionModel
         * @return Collection
         */
        public function other(Request $request, QuestionModel $questionModel, int $user_id)
        {
            $limit = $request->query('limit', 15);
            $after = $request->query('after', 0);
            $questions = $questionModel->with('user')
            ->where('user_id', $user_id)
            ->where('amount', '=', 0)
            ->whereNotExists(function ($query) {
                return $query->from('question_invitation')->whereRaw('question_invitation.question_id = questions.id');
            })
            ->when($after, function ($query) use ($after) {
                return $query->where('id', '<', $after);
            })
            ->limit($limit)
            ->orderBy('questions.id', 'desc')
            ->get();
    
            return $questionModel->getConnection()->transaction(function () use ($questions, $user_id) {
                return $questions->map(function ($question) use ($user_id) {
                    $question->answer = $question->answers()
                        ->with('user')
                        ->orderBy('id', 'desc')
                        ->first();
    
                    if ($question->answer) {
                        if ($question->answer->anonymity && $question->answer->user_id !== $user_id) {
                            $question->answer->addHidden('user');
                            $question->answer->user_id = 0;
                        }
                        $question->answer->liked = (bool) $question->answer->liked($user_id);
                        $question->answer->collected = (bool) $question->answer->collected($user_id);
                        $question->answer->rewarded = (bool) $question->answer->rewarders()->where('user_id', $user_id)->first();
                    }
    
                    return $question;
                });
            });
        }

    理解不了call()...暂记下来 vendorlaravelframeworksrcIlluminateContainerBoundMethod.php

    
    
  • 相关阅读:
    Instruments之Core Animation学习
    Instruments之Allocations
    Instruments之Activity Monitor使用入门
    Instruments之相关介绍(一)
    快速理解Java中的五种单例模式
    iOS单例详解
    eclipse设置代码自动提示
    iOS-静态库,动态库,framework,bundle浅析(四)
    8.0docker的客户端和守护进程
    1.0 docker介绍
  • 原文地址:https://www.cnblogs.com/sgm4231/p/10413724.html
Copyright © 2011-2022 走看看