返回结果:

原来是调用同控制器的这四个方法之一...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

												

laravel 不理解的call方法的更多相关文章

  1. Laravel 深入理解路由和URL生成

    原文地址: Laravel 深入理解路由和URL生成 在模板中我们一般不会直接写死url,而是用url助手生成url,本文介绍一下url助手的使用以及遇到的一些比较头疼的问题. 首先,我们创建了一个路 ...

  2. js中的回调函数的理解和使用方法

    js中的回调函数的理解和使用方法 一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为 ...

  3. 【JVM虚拟机】(8)--深入理解Class中--方法、属性表集合

    #[JVM虚拟机](8)--深入理解Class中--方法.属性表集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机] ...

  4. 理解 ES6 Generator-next()方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 查看 Laravel 的 SQL 语句的方法

    在使用 Laravel 的 Eloquent 进行数据查询的时候,很多小伙伴都想看到背后执行的 SQL 语句到底是什么样的,这小笔录就是解决这个小问题的: 在 Providers/AppService ...

  6. 连续张量理解和contiguous()方法使用,view和reshape的区别

    连续张量理解和contiguous()方法使用,view和reshape的区别 待办 内存共享: 下边的x内存布局是从0开始的,y内存布局,不是从0开始的张量 For example: when yo ...

  7. Laravel框架中的make方法详解

    为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢? 因为,每个人的思维方式和方向是不一 ...

  8. Laravel的三种安装方法总结

    Laravel号称巨匠级PHP框架,越来越多的PHPer选择它作为开发框架,作为一个Laravel初学者相信很多人向我一样被安装挡在了门外.所以今天结合文档和自己的学习经历总结一下Laravel的安装 ...

  9. laravel Input Cokkie 的各种方法 超实用!!!

    基本输入 Laravel使用一种简单的方式来访问用户提交的信息. 你可以用统一的方式来访问用户提交的信息,而不用为用户提交信息的方式操心. 获取一个用户提交的值 代码如下: $name = Input ...

随机推荐

  1. linux 共享内存的理解

    1.  共享内存是在shmget时创建出来的, 在 shmget(USER_SHARE_MEM_KEY,  sizeof(ADDR_NODE) , IPC_CREAT|0666)) ==-1) 的 s ...

  2. centos6.8安装python3.7无法import _ssl

    转载https://www.jianshu.com/p/ace9be0b08ed 公司运维提供的服务器是centos6.8,打算在上面装python3.7,结果费尽周折,按照网上的步骤python3. ...

  3. 海洋cms v6.53 v6.54版本漏洞复现

    海洋cms v6.53 v6.54版本漏洞复现 参考链接: 今天发现freebuf上一篇海洋cms的漏洞,来复现一下. http://www.freebuf.com/vuls/150042.html ...

  4. ubuntu16.04配置anaconda环境

    0 - 下载安装包 推荐到清华镜像下载.我选择的是Anaconda3-5.1.0-Linux-x86_64.sh. 1 - 安装Anaconda 然后切换到安装包目录,执行下面命令,期间一直按回车或者 ...

  5. 20165337 2017-2018-2《Java程序设计》课程总结

    一.每周作业链接汇总 预备作业一:我期望的师生关系 简要内容: 读完文章的感想 我印象深刻的老师 我期望的师生关系 预备作业二:学习基础和C语言基础调查 简要内容: 你有什么技能比大多人(超过90%以 ...

  6. python模块-----time

    说明 time模块提供各种时间相关的功能 与时间相关的模块有:time,datetime,calendar 这个模块的功能不是适用于所有的平台 这个模块中定义的大部分函数是调用C平台上的同名函数实现 ...

  7. RVIZ 保存配置 and 使用配置

    每次无参数启动RVIZ, 都会使用配置 -/.rviz/default.rviz 如果每次是正常退出的话,上一次的配置会被保存到文件-/.rviz/default.rviz 需要另外保存成配置文件的话 ...

  8. python numpy 三行代码打乱训练数据

    今天发现一个用 numpy 随机化数组的技巧. 需求 我有两个数组( ndarray ):train_datasets 和 train_labels.其中,train_datasets 的每一行和 t ...

  9. js中 && 和 || 的用法

    js中的&& 和 || 一直以为是php那一套,上网查了一些资料,才发现不一样 a() && b() :如果执行a()后返回true,则执行b()并返回b的值:如果执行 ...

  10. python3+selenium框架设计01-Page Object

    页面对象模型Page Object Modal是一种脚本设计模型,将页面元素,业务操作分割,当实际页面发生变化的时候,只需要修改页面元素文件,业务操作不需要修改. 具体实现需要先写一个页面公共类,里面 ...