Topic:query()是什么意思,我在文档里面找不到解说。

// 从话题数据表里取出限定时间范围($pass_days)内,有发表过话题的用户 // 并且同时取出用户此段时间内发布话题的数量

$topic_users = Topic::query()->select(DB::raw(‘user_id, count(*) as topic_count’)) ->where(‘created_at’, ‘>=’, Carbon::now()->subDays($this->pass_days)) ->groupBy(‘user_id’) ->get();1.

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

教程里没有,下一步就要到文档里看了,然后就是搜索引擎,先试试找找看

3年前 评论
wzg10086 (楼主) 3年前
城里的野山参 (作者) 3年前

我也是第一遍学习,看到这个问题了,就来试试。

花几分钟时间查了下手册和google,没找到,根据@城里的野山参 给的思路,在ActiveUserHelper.php里面不断dd()测试

说一下我的方法给@wzg10086 兄弟参考,然后请@城里的野山参 大神指点一下

一、首先测试 dd(Topic::query())

发现是一个集合对象(应该是这么叫吧。。)

猜想:此时仍然不理解

二、然后去掉query(),测试dd(Topic)

页面报错,同时phpstorm也提示 [未定义的常量 'Topic']

猜想:Topic如果不加query就啥也不是。

三、继续测试: 在sql语句中去掉query()

把Topic::query()->select 更改为 Topic::select(),

phpstorm报错说[方法 'select' 在 \App\Models\Topic 中未找到]

猜想:验证了上面的猜想,topic如果不加query就啥也不是,后面的select方法无法使用

四、看看手册怎么用

查看手册 查询构造器《Laravel 7 中文文档》 这一章里面用的都是 DB::table('users')->select 比葫芦画瓢,接着测试对比 dd(DB::table('topics'),Topic::query()),发现结果差不多

猜想:topic::query() 的作用差不多等同于手册中的 DB::table('topics')

五、查看控制器里面是怎么用的

例如:TopicsController.php,在方法上传入参数 Topic $topic,方法内可以直接使用$topic-> ...

猜想:可以直接使用,是因为在方法里面传入了参数。至于原因,查询手册中的路由模型绑定应该就能明白

以上,说出我的结论

topic::query() 的作用大概等同于手册中的 DB::table('topics')

以及还存在的疑问

这里为什么不用DB::table('topics')而要用topic::query()呢?

3年前 评论

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