不太理解模糊查询里的闭包,麻烦讲解一下!

$builder->where(function ($query) use ($like) {
                $query->where('title', 'like', $like);
            });

用上面这段代码举例。疑惑点是:

1.闭包的参数$query与闭包里面的$query的关系。在正常函数中,函数的参数的作用是从外界传值到函数里面进行使用,但在这里显然不是。

2.上述代码中的闭包的返回值是啥?where(function ($query) use ($like) { $query->where('title', 'like', $like);});怎么就变成了where('title' , 'like' , $like)

谢谢解答!

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
leo
最佳答案

闭包函数也是函数,函数体中的 $query 变量就是来自其参数。

至于这个 $query 是谁传入的、传入的是什么东西,需要去研究相关的源代码才能知道。可以参考这个回复 问答:关于 Laravel 闭包的问题

4年前 评论
讨论数量: 6

闭包里面写 where 语句相当于加了个括号约束而已。 类似生成的 sql 语句如下
select * form xxx where (title like xxx)

4年前 评论

@Max 那请问参数$query与闭包里面的$query的关系是什么呢?主要不明白点就是这个关系和整个闭包的返回值是怎么产生的。$builder->where(function ($query) use ($like) {$query->where('title', 'like', $like);});怎么就变成了$builder->where('title', 'like', $like);

4年前 评论
leo

闭包函数也是函数,函数体中的 $query 变量就是来自其参数。

至于这个 $query 是谁传入的、传入的是什么东西,需要去研究相关的源代码才能知道。可以参考这个回复 问答:关于 Laravel 闭包的问题

4年前 评论

@leo 好的,谢谢,还有就是L05 5.7版本的5.5 5.6章节在页面调用商品的封面图片用的是image_url字段,在5.1章节创建数据表时用的是image字段。

4年前 评论
leo

@Neymar 建议仔细看课程

4年前 评论
任飘渺

$builder->where(function ($query) use ($like) { $query->where('title', 'like', $like); });

$query 可以看成他自己,有点像类的 $this 。 这里是 use 传入外部参数。

3年前 评论
liziyu 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!