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.

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 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年前 评论

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