首页 > 解决方案 > laravel Eloquent 有和没有实例

问题描述

我是新手Laravel

我想知道两者的区别

  1. 实例化一个模型类。
 $example = new modelClass();
 $example->first();

  1. 无需实例化模型类。
  $example = ModelClass::all();

谁能帮忙。谢谢。

标签: phplaraveleloquent

解决方案


不同之处在于,当您使用new运算符时,您将获得一个模型类的实例,该实例具有所有可用的方法,但属性为空。当你调用这个空模型实例的first()方法时,由于 Eloquent 是活动记录 ORM,Model类让它变得很神奇,调用 sql,填充属性并返回相同的模型,但已经不是空的属性。

同时,当您使用模型类作为外观进行操作时,系统再次在引擎盖下解析模型类的实体,然后调用同一初始化对象的所有方法,如 int 第一个示例,但所有方法都返回不是模型实例,它返回模型集合 - 像数组一样使用的对象,因此您可以迭代,但有一堆附加函数。

所以,如果你想知道调用门面或初始化对象有什么区别,除了系统会为你初始化对象外,没有什么区别,但是如果你正在寻找灵活的系统,你会意识到使用门面,因为要调用外观,您应该直接调用类,而不是抽象,而对于模型,您可以创建工厂实例并像抽象一样调用它。

但是,对于新的,你可以使用门面,但是当你深入 OOP 时,请记住上面的事情!


推荐阅读