什么是 Eloquent ORM,为什么需要它?
Eloquent ORM(对象关系映射)是 PHP 框架 Laravel 中用于处理数据库的内置库。它提供了一种优雅、直观的方式,使用 Active Record 模式与关系型数据库(MySQL、PostgreSQL、SQLite、SQL Server)进行交互。
为什么需要 Eloquent?
- SQL 抽象:无需编写原始 SQL 查询,而是直接操作 PHP 对象。这使得代码更简洁、可读性更强且更安全。
- Active Record:每个 Eloquent 模型代表数据库中的一张表。模型实例就是该表中的一行。您只需操作对象的属性,即可读取、修改和保存数据。
- 防止 SQL 注入:Eloquent 使用带有预处理语句的 PDO(PHP 数据对象),自动转义用户输入。
- 关联关系:轻松定义和使用表之间的关系(一对一、一对多、多对多等)。
- 集合:查询结果以集合形式返回——这是一种强大的对象,提供了许多有用的数据处理方法(map、filter、reduce、pluck 等)。
- 修改器与访问器:允许在保存(修改器)或从数据库读取(访问器)时转换数据。
Eloquent 不仅仅是一个库,它是 Laravel 生态系统的基础部分。理解 Eloquent 对于在该框架上进行高效开发至关重要。
安装
Eloquent ORM 会随 Laravel 框架自动安装。如果您创建新的 Laravel 项目,Eloquent 已准备就绪。
通过 Composer 安装(如果您使用 Laravel):
composer create-project laravel/laravel example-appcd example-app无 Laravel 安装 Eloquent(独立使用):
您可以在 Laravel 之外使用 Eloquent,例如在您自己的项目中。为此,您需要安装 illuminate/database 包并配置数据库连接。
composer require illuminate/databasecomposer require illuminate/events // 用于模型事件(可选)连接配置示例(独立使用):
<?phprequire 'vendor/autoload.php';
use Illuminate\\Database\\Capsule\\Manager as Capsule;
$capsule = new Capsule;
$capsule->addConnection([ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'your_database', 'username' => 'your_username', 'password' => 'your_password', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '',]);
// 设置全局 Eloquent 实例$capsule->setAsGlobal();
// 启动 Eloquent$capsule->bootEloquent();快速入门及代码示例
假设数据库中有一个 users 表。让我们创建一个 Eloquent 模型来操作它。
步骤 1:创建模型
在 Laravel 中,模型通常存储在 app/Models 中。创建文件 User.php:
<?php
namespace App\\Models;
use Illuminate\\Database\\Eloquent\\Model;
class User extends Model{ // Eloquent 会自动将此模型与 'users' 表关联 // 表名由类名的复数形式(snake_case)确定 // 如果表名不同,请指定 $table 属性 // protected $table = 'my_users';
// 指定哪些字段可以批量赋值(用于防止 mass-assignment) protected $fillable = ['name', 'email', 'password'];}\