返回结果:
原来是调用同控制器的这四个方法之一...vendor\zhiyicx\plus-question\src\API2\Controllers\UserQuestionController.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()...暂记下来 vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php