Laravel的Eloquent ORM通过模型类操作数据库,支持CRUD功能。定义模型继承Model类,设置表名和可填充字段;查询可用all、find、where等方法;新增支持save和create;更新需先查后改或用update;删除可通过delete或destroy方法实现。

Laravel 的 Eloquent ORM 是一个强大且优雅的数据库操作工具,它将数据库表映射为 PHP 模型类,让你可以用面向对象的方式进行增删改查(CRUD)操作。使用 Eloquent 可以大幅提升开发效率,同时保持代码清晰可维护。
定义 Eloquent 模型
每个数据库表对应一个 Eloquent 模型。模型通常位于 app/Models 目录下,需继承 Illuminate\Database\Eloquent\Model 类。
例如,有一个 users 表,创建对应的模型:
class User extends Model{
// 指定表名(可选,默认会自动转为复数)
protected $table = 'users';
// 允许批量赋值的字段
protected $fillable = ['name', 'email', 'password'];
}
如果遵循 Laravel 命名规范(模型单数,表名复数),可以省略 $table 属性。
查询数据(Read)
使用模型静态方法从数据库中获取记录。
- User::all():获取所有用户
- User::find(1):根据主键查找,返回单个模型或 null
- User::findOrFail(1):找不到时抛出 404 异常
- User::where('active', 1)->get():条件查询,返回集合
- User::where('name', 'John')->first():获取第一条匹配记录
支持链式调用:
User::where('age', '>', 18)->orderBy('name')
->take(10)
->get();
新增数据(Create)
有两种常见方式插入新记录。
-
new 实例方式:
$user = new User;
$user->name = 'Alice';
$user->email = 'alice@example.com';
$user->save(); // 返回 true/false -
批量创建(需确保字段在 $fillable 中):
$user = User::create([
'name' => 'Bob',
'email' => 'bob@example.com',
'password' => bcrypt('secret')
]);
更新数据(Update)
先查询再修改属性并保存。
$user = User::find(1);if ($user) {
$user->name = 'Updated Name';
$user->save();
}
也可以直接批量更新:
User::where('active', 0)->update(['active' => 1]);
注意:update() 是静态方法,不会触发模型事件(如 saving、updated)。
删除数据(Delete)
通过实例或查询删除记录。
-
通过实例删除:
$user = User::find(1);
if ($user) {
$user->delete();
} -
通过主键删除:
User::destroy(1);
User::destroy([1, 2, 3]); // 删除多个 - 条件删除: User::where('score', 'delete();
软删除需要在模型中启用:use Illuminate\Database\Eloquent\SoftDeletes; 并添加 deleted_at 字段。
基本上就这些。Eloquent 让数据库操作变得直观又高效,合理使用模型能显著提升 Laravel 应用的开发体验。










