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 ...
随机推荐
- java基础_0204:运算符
掌握Java中标识符的定义: 掌握Java中数据类型的划分以及基本数据类型的使用原则: 掌握Java运算符的使用: 掌握Java分支结构.循环结构.循环控制语法的使用: 掌握方法的定义结构以及方法重载 ...
- Python Tornado简介
简介 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了 ...
- npm 的 --save 和 --save-dev 的区别
--save-dev 是作为开发依赖保存到 packsge.json 中的 devDependencies 中,即在开发环境中用到的依赖,如 webpack.babel 等用于开发打包的依赖,只是在执 ...
- MySql cmd下的学习笔记 —— 有关修饰器的知识(trigger)
关于触发器的理解: 进行数据库应用软件的开发时,有时我们碰到表的某些数据的改变时,希望同时 引起其他相关数据改变的需求,利用触发器就能满足这样的需求. 触发器能在表中的某些特定数据变化时自动完成某些查 ...
- Java HashMap工作原理及实现[转]
原文:http://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E5%8F%8A%E5%AE ...
- Python os.chdir() 方法
概述 os.chdir() 方法用于改变当前工作目录到指定的路径. 语法 chdir()方法语法格式如下: os.chdir(path) 参数 path -- 要切换到的新路径. 返回值 如果允许访问 ...
- hibernate框架学习之持久化对象OID
持久化对象唯一标识——OID 1)数据库中使用主键可以区分两个对象是否相同2)Java语言中使用对象的内存地址区分对象是否相同3)Hibernate中使用OID区分对象是否相同Hibernate认为每 ...
- linux系统快捷键
tab 补全命令 两次tab 列出所有以字符前缀开头的命令 ctrl A 把光标移到命令行开头 ctrl E 把光标移到命令行结尾 ctrl C 强制终止当前的命令 ct ...
- c 中打印格式%g
C语言中打印float或double类型最常用的是%f格式,最近看书时看到有使用%g格式打印. %f 表示按浮点数的格式打印. 小数点后固定6位 %e 表示以指数形式的浮点数格式输出. %g 表示自 ...
- PHP一维数组转二维数组正则表达式
2017年11月20日17:17:08 array(1 => '哈哈') 变成 array('id' => 1, 'name' => '哈哈') 查找目标: (\d)\s=&g ...