PDO::query () 到底返回了什么?

PDO::query()到底返回了什么?
查询商品时可能会同时传入栏目和商品名两个条件。以前我写代码都是先创建一个空$where数组,判断栏目和商品名,往$where里追加条件。今天看到别人是这么写的:
PDO::query()到底返回了什么?

PDO::query()到底返回了什么?
效果就是第二个的where条件追加到了第一个上。
看了下Model的源代码,调用太多了,理不出头绪。感觉大意是返回了一个静态变量。
PDO::query()到底返回了什么?
但是我如果改成下面的代码就不行了:
PDO::query()到底返回了什么?
PDO::query()到底返回了什么?
查询出了所有的商品。一个条件都没带上。感觉$res行的$model和if判断里的$model是两码事。麻烦大神详细解答下呢。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

https://cdn.learnku.com/uploads/images/202...

  1. 第一种写法,$model 从一开始就是一个 查询构造器

https://cdn.learnku.com/uploads/images/202...

  1. 第二种写法,$model, 两次调用 $model->where 之后依然是 new ProductModel() :joy:
4年前 评论
讨论数量: 14

第二种要这样:

$model = $model->where('a',1)
4年前 评论

@轻描淡写

file 这种方式不起作用是为什么?

4年前 评论

@轻描淡写 看完了,还是没找到PDO::query和new PDO的区别。

4年前 评论

上面有个地方我说错了。
new PDO 返回的是实例
PDO::query() 返回的是 这个
这个是查询构造器的实例
file

4年前 评论

@轻描淡写 是啊。我现在迷惑的是为什么query的方式可以实现where追加的效果,new返回的where不起作用。

4年前 评论

https://cdn.learnku.com/uploads/images/202...

  1. 第一种写法,$model 从一开始就是一个 查询构造器

https://cdn.learnku.com/uploads/images/202...

  1. 第二种写法,$model, 两次调用 $model->where 之后依然是 new ProductModel() :joy:
4年前 评论

你现在看不懂源码,这是问题所在。 你先记得这么用吧,可以等以后看得懂源码再来想这个问题。

4年前 评论

@di-gua 大佬,大概看源码的哪个部分?

4年前 评论
  1. 看 Model类 的 __call()、__callStatic()、query()方法
  2. 然后这两个类是查询构造器: Illuminate\Database\Eloquent\Builder、Illuminate\Database\Query\Builder
  • 你可以dd下这几种常用的写法,分别返回了什么对象
  • 也可以跟踪下这几种写法,laravel 内部去调用了哪些方法
    dd(get_class(Product::query()));
    dd(get_class((new Product)->where()));
    dd(get_class(Product::where());
    //然后再来看这种你有疑问的写法
    $model = new Product;
    $model->where()
    dd($model);
4年前 评论

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