Eloquent ORM
介绍
Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库的互动。 每个数据库表会和一个对应的「模型」互动。
在开始之前,记得把 app/config/database.php
里的数据库连接配置好。
基本用法
我们先从建立一个 Eloquent 模型开始。模型通常放在 app/models
目录下,但是您可以将它们放在任何地方,只要能通过 composer.json
被自动载入。
定义一个 Eloquent 模型
class User extends Eloquent {}
注意我们并没有告诉 Eloquent User
模型会使用哪个数据库表。若没有特别指定,系统会默认自动对应名称为「类名称的小写复数形态」的数据库表。所以,在上面的例子中, Eloquent 会假设 User
将把数据存在 users
数据库表。可以在类里定义 table
属性自定义要对应的数据库表。
class User extends Eloquent {
protected $table = 'my_users';
}
注意
Eloquent 也会假设每个数据库表都有一个字段名称为 id
的主键。您可以在类里 定义 primaryKey
属性来重写。同样的,您也可以定义 connection
属性,指定模型连接到专属的数据库连接。
定义好模型之后,您就可以从数据库表新增及获取数据了。注意在默认情况下,在数据库表里需要有 updated_at
和 created_at
两个字段。如果您不想设定或自动更新这两个字段,则将类里的 $timestamps
属性设为 false
即可。
取出所有模型数据
$users = User::all();
根据主键取出一条数据
$user = User::find(1);
var_dump($user->name);
提示
所有查询构造器里的方法,查询 Eloquent 模型时也可以使用。
根据主键取出一条数据或抛出异常
有时, 您可能想要在找不到模型数据时抛出异常,以捕捉异常并让 App::error
处理并显示 404 页面。
$model = User::findOrFail(1);
$model = User::where('votes', '>', 100)->firstOrFail();
要注册错误处理,可以监听 ModelNotFoundException
use Illuminate\Database\Eloquent\ModelNotFoundException;
App::error(function(ModelNotFoundException $e)
{
return Response::make('Not Found', 404);
});