代码之家  ›  专栏  ›  技术社区  ›  lightning_missile

从雄辩的模型实例调用查询生成器方法

  •  1
  • lightning_missile  · 技术社区  · 8 年前

    一般来说,我对拉雷维尔和活跃唱片都很陌生。如果这是一个愚蠢的问题,我提前道歉。但我想确认一下我的想法是否正确。

    由于雄辩的模型是查询生成器,因此您应该查看所有 查询生成器上可用的方法。您可以使用其中任何一种

    人们多次提到,当处理非常大的数据时,雄辩的查询不是很好,通常最好使用基本查询生成器。

    我想知道这个声明:

    您可以在雄辩的查询中使用这些方法中的任何一种。

    我读过的许多例子将两者区分开来(例如。

    DB::table('table')->get();
    

    model::all()
    

    )在比较性能时。

    我计划用Laravel创建我的新项目,并考虑使用这两种功能(处理复杂和大型数据的基本查询生成器方法,然后使用特定的雄辩方法处理任何其他数据)。

    我的问题是:

    我在考虑如何使我的代码可读、干净、合理高效。我将处理可能较大的数据(例如,两个数据库上的数千到数百万行和20到30个表)。可以这样说吗:

    与以下内容相同:

    MODEL::get();
    

    假设两者都只返回一个集合,在大数据中通常比

    MODEL::all();
    

    1 回复  |  直到 8 年前
        1
  •  5
  •   rexw    8 年前

    查看每个语句返回的差异很重要。虽然两者都将返回一个集合,但集合中的项目起了作用。

    DB::table('table')->get()
    

    返回stdClass对象的集合,Laravel不进行任何额外处理。如果您使用的是软删除,这将忽略该功能。它还将返回行中的所有字段。

    MODEL::get()
    

    这将返回模型的集合。Laravel将把每个结果加载到模型的一个新实例中。软删除等特征和隐藏[]和可见[]等属性将得到尊重。