为什么每次查询都会调用 query () 方法?

类似于这样:

file

没有这个方法不是也是可以正常查询的吗

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

不加也可以,加 query() 是为了配合 laravel-ide-helper 做代码提示

5年前 评论
讨论数量: 11
leo

不加也可以,加 query() 是为了配合 laravel-ide-helper 做代码提示

5年前 评论
leo

不加也可以,加 query() 是为了配合 laravel-ide-helper 做代码提示

5年前 评论
qbhy

@leo 加了 query 是为了让 IDE 更好找方法,因为query不是魔术方法实现的。 static 的 where、whereIn 这些都是魔术方法实现的,我建议加 query ,因为最终 eloquent 也会在经过 n 多魔术方法后调用这个函数。

5年前 评论
mouyong

@leo 关于调用的时候

file

如果有时候恰好需要在这个位置加。然后没有使用 _ide_helper.php ,我认为有个 query() 会更加方便。想了解下你的看法。谢谢 :grin:

5年前 评论
mouyong

file

而且感觉在有 query 的时候,下面的查询排列都是很整齐的。

5年前 评论
mouyong

query 的源码是

public static function query()
{
    return (new static)->newQuery();
}

得到的是一个 子类 Model 实例。

如果依赖静态调用。它需要 经过 callStatic -> call -> ...-> newQuery 才能调用

关于性能上面有什么区别吗?个人认为直接调用得到 newQuery 实例。会比绕一圈后得到实例更快一点。虽然有的时候基本可以忽略不记这一点点性能损耗。

5年前 评论
leo

@96qbhy @蜗牛

这只是一个编码习惯问题,对于不使用 PHPStorm 的开发者来说少写一个 query() 可能会提升他的开发效率,Laravel 本来就是一个为快速开发而生的框架,既然加不加 query() 都能达到目的,那就是哪个写起来顺手就用哪一个咯。

还是那个观点,编程没有唯一解。

5年前 评论
mouyong

@leo 赞同,但是如果在一个团队中。有的人有加。有的人不加。那这样的情况呢?投票定胜负,得出最后的规范吗?

5年前 评论
leo

@蜗牛 技术 Leader 定咯

5年前 评论
mouyong

@leo 嗯嗯。了解了。谢谢 :grin:

5年前 评论

加了可以使用代码提示

3年前 评论

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