千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:长沙千锋IT培训  >  技术干货  >  什么是 Laravel Eloquent Eager Loading?

什么是 Laravel Eloquent Eager Loading?

来源:千锋教育
发布人:xqq
时间: 2023-10-15 01:55:53

一、什么是 Laravel Eloquent Eager Loading

Laravel Eloquent Eager Loading 是一种优化数据库查询的方法,可以避免在一个循环中多次查询数据库而导致的性能问题。

当需要获取一个模型及其关联模型的数据时,如果使用常规的查询方法,每个关联模型都会独立执行一条数据库查询,从而导致数据库查询次数的增加和潜在的性能问题。而使用 Eager Loading,则可以预先加载关联数据,减少数据库查询次数,提高性能。

它的核心是Eager Loading,它告诉Eloquent你想要抓取一个具有特定关系的模型,这样框架就会产生一个更高效的查询来抓取你需要的所有数据。通过快速加载,您可以将许多查询减少到一个或两个。

二、Eloquent 模型约定

现在,我们来看一个 Flight 模型的示例,我们将用它从 flights 数据库表中检索和存储数据信息:

1、数据表名称

请注意,我们并没有告诉 Eloquent 我们的 Flight 模型使用哪个数据表。 除非明确地指定了其它名称,否则将使用类的复数形式「蛇形命名」来作为表名。因此,在这种情况下,Eloquent 将假设 Flight 模型存储的是 flights 数据表中的数据,而 AirTrafficController 模型会将记录存储在 air_traffic_controllers 表中。

你可以通过在模型上定义 table 属性来指定自定义数据表:

2、主键

Eloquent 也会假设每个数据表都有一个名为 id 的主键列。你可以定义一个受保护的 $primaryKey 属性来重写约定。

此外,Eloquent 假设主键是一个自增的整数值,这意味着默认情况下主键会自动转换为 int 类型。如果您希望使用非递增或非数字的主键则需要设置公共的 $incrementing 属性设置为 false:

如果你的主键不是一个整数,你需要将模型上受保护的 $keyType 属性设置为 string:

3、时间戳

默认情况下,Eloquent 预期你的数据表中存在 created_at 和 updated_at 两个字段 。如果你不想让 Eloquent 自动管理这两个列, 请将模型中的 $timestamps 属性设置为 false:

如果需要自定义时间戳的格式,在你的模型中设置 $dateFormat 属性。这个属性决定日期属性在数据库的存储方式,以及模型序列化为数组或者 JSON 的格式:

如果你需要自定义存储时间戳的字段名,可以在模型中设置 CREATED_AT 和 UPDATED_AT 常量的值来实现:

4、数据库连接

默认情况下,Eloquent 模型将使用你的应用程序配置的默认数据库连接。如果你想为模型指定一个不同的连接,设置 $connection 属性即可:

延伸阅读1:Laravel 的 Eloquent ORM 是什么

Laravel 的 Eloquent ORM 提供了一个漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,以及在数据表中插入新记录。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

为什么搜索引擎在磁盘上的索引不能做到实时添加而数据库可以?

2023-10-15

windows版oracle为什么老是卸载不干净?

2023-10-15

sql server2000导出CSV文件用EXCEL数据格式出错怎么处理?

2023-10-15

最新文章NEW

MYSQL 查询库存结存数量语句怎么写?

2023-10-15

哪些平台支持Python编程?

2023-10-15

设置数据库的字符集和设置表字段字符集的区别是什么?

2023-10-15

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>