跳转到主要内容

什么是 Eloquent ORM

Laravel 内置了名为 Eloquent 的对象关系映射器(ORM)。 Eloquent 采用 ActiveRecord 模式,用于简化数据库交互。 使用 Eloquent 时,为每张数据库表准备一个对应的「模型」类。 通过模型可以完成记录的查询、插入、更新与删除。
使用 Eloquent 之前,请先在 config/database.php 中配置数据库连接。 默认使用 .env 中的 DB_* 设置。

创建模型

使用 make:model Artisan 命令生成新模型:
同时创建迁移:
模型会生成到 app/Models

模型与表的对应

Eloquent 会根据类名推断表名:将类名转换为下划线复数形式。 不符合命名约定时,可在模型中定义 $table 属性:

时间戳

Eloquent 默认自动维护 created_atupdated_at。 在迁移中调用 $table->timestamps() 即可,保存或更新时会自动写入。 关闭自动维护:

批量赋值保护

批量保存数据时需要配置批量赋值保护。

fillable

$fillable 指定允许批量赋值的列:

guarded

反向指定禁止赋值的列使用 $guarded
$guarded 设为空数组会允许所有列被赋值。若直接接收用户输入,可能造成意外列被修改。建议使用 $fillable 明确许可范围。

Eloquent 查询执行流程

User::where()->get() 的内部流程如下:

基本 CRUD

读取

带条件:

创建

需要设置 $fillable
或逐个赋值:

更新

或批量更新:
批量更新符合条件的多条:

删除

按 ID 直接删除:

基础查询方法

实践示例:使用 Post 模型

一个基于迁移创建的 posts 表的控制器示例:
在控制器方法参数中写 Post $post,Laravel 会通过路由模型绑定自动取回模型,无需再写 Post::findOrFail($id)

模型事件生命周期

调用 save() 时触发事件的顺序如下。新建与更新触发不同的事件,savingsaved 在两种情况下都会触发。

下一步

迁移

回顾如何通过迁移创建 Eloquent 所用的数据表。
最后修改于 2026年7月18日