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

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

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

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

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

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

第二种要这样:

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

@轻描淡写

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

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

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

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

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

5年前 评论

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

5年前 评论
  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);
5年前 评论