laravel 不理解的call方法
返回结果:
原来是调用同控制器的这四个方法之一...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方法的更多相关文章
- Laravel 深入理解路由和URL生成
原文地址: Laravel 深入理解路由和URL生成 在模板中我们一般不会直接写死url,而是用url助手生成url,本文介绍一下url助手的使用以及遇到的一些比较头疼的问题. 首先,我们创建了一个路 ...
- js中的回调函数的理解和使用方法
js中的回调函数的理解和使用方法 一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为 ...
- 【JVM虚拟机】(8)--深入理解Class中--方法、属性表集合
#[JVM虚拟机](8)--深入理解Class中--方法.属性表集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机] ...
- 理解 ES6 Generator-next()方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 查看 Laravel 的 SQL 语句的方法
在使用 Laravel 的 Eloquent 进行数据查询的时候,很多小伙伴都想看到背后执行的 SQL 语句到底是什么样的,这小笔录就是解决这个小问题的: 在 Providers/AppService ...
- 连续张量理解和contiguous()方法使用,view和reshape的区别
连续张量理解和contiguous()方法使用,view和reshape的区别 待办 内存共享: 下边的x内存布局是从0开始的,y内存布局,不是从0开始的张量 For example: when yo ...
- Laravel框架中的make方法详解
为什么网上已经有这么多的介绍Laravel的执行流程了,Laravel的容器详解了,Laravel的特性了,Laravel的启动过程了之类的文章,我还要来再分享呢? 因为,每个人的思维方式和方向是不一 ...
- Laravel的三种安装方法总结
Laravel号称巨匠级PHP框架,越来越多的PHPer选择它作为开发框架,作为一个Laravel初学者相信很多人向我一样被安装挡在了门外.所以今天结合文档和自己的学习经历总结一下Laravel的安装 ...
- laravel Input Cokkie 的各种方法 超实用!!!
基本输入 Laravel使用一种简单的方式来访问用户提交的信息. 你可以用统一的方式来访问用户提交的信息,而不用为用户提交信息的方式操心. 获取一个用户提交的值 代码如下: $name = Input ...
随机推荐
- BZOJ4921「Lydsy1706月赛」互质序列
吐槽一下BZOJ没有C++11 题还是不难的 BZOJ 4921 题意 在长度为$ n$的数列中去掉非空的连续一段并保证剩下数字不少于$ 2$ 求合法的所有方案中剩下数字的最大公约数的总和 $Sol ...
- 【tmos】使用joda-time来个格式化时间
代码 @Test public void test(){ DateTime dateTime = new DateTime(); String str = dateTime.toString(&quo ...
- 给出随机存储器(RAM)和只读存储器(ROM)的差别
给出随机存储器(RAM)和只读存储器(ROM)的差别
- linux中管理包的apt和dpkg命令用法
1,apt-get命令 apt-get是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索.安装.升级.卸 ...
- TCP通信实现对接硬件发送与接收十六进制数据 & int与byte的转换原理 & java中正负数的表示
今天收到的一份需求任务是对接硬件,TCP通信,并给出通信端口与数据包格式,如下: 1.首先编写了一个简单的十六进制转byte[]数组与byte[]转换16进制字符串的两个方法,如下: /** * 将十 ...
- SQL Server - 索引详细教程 (聚集索引,非聚集索引)
转载自:https://www.cnblogs.com/hyd1213126/p/5828937.html 作者:爱不绝迹 (一)必读:深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录. ...
- bootstrap模态框显示时被遮罩层遮住了
<style>.modal-backdrop{z-index:0;}</style>
- nginx 配置域名转发
自己测试环境,配置下载目录和一个jenkins的地址: 域名跳转,反向代理 # cat ../nginx.conf user www www; worker_processes ; error_log ...
- 解决64bit不能连接access的问题
原有的程序迁移至64位,结果调用数据库时出错,原因是jet驱动没有64位的,得换用64位的驱动程序: 1. 下载运行 AccessDatabaseEngine_x64.exe (http://ww ...
- Efuse--芯片存储
1.Efuse是什么 Efuse类似于EEPROM,是一次性可编程存储器,在芯片出场之前会被写入信息,在一个芯片中,efuse的容量通常很小,一些芯片efuse只有128bit. 2.efuse的作用 ...