简介
Laravel 内置的 Eloquent ORM 提供了一个美观、简单的与数据库打交道的 ActiveRecord 实现,每张数据表都对应一个与该表进行交互的模型(Model),通过模型类,你可以对数据表进行查询、插入、更新、删除等操作。
在开始之前,确保在 config/database.php 文件中配置好了数据库连接。更多关于数据库配置的信息,请查看文档。
定义模型
我们从创建一个 Eloquent 模型开始,模型类通常位于 app 目录下,你也可以将其放在其他可以被 composer.json 文件自动加载到的地方。所有 Eloquent 模型都继承自 Illuminate\Database\Eloquent\Model 类。
创建模型实例最简单的办法就是使用 Artisan 命令 make:model:
php artisan make:model Flight
如果你想要在生成模型时生成数据库迁移,可以使用 --migration 或 -m 选项:
php artisan make:model Flight --migration php artisan make:model Flight -m
Eloquent 模型约定
现在,让我们来看一个 Flight 模型的例子,我们将用该类获取和存取数据表 flights 中的信息:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { // }
表名
注意我们并没有告诉 Eloquent 我们的 Flight 模型使用哪张表,默认规则是小写的模型类名复数格式作为与其对应的表名(除非在模型类中明确指定了其它名称)。所以,在本例中,Eloquent 认为 Flight 模型存储记录在 flights 表中。你也可以在模型中定义 table 属性来指定自定义的表名:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /** * 关联到模型的数据表 * * @var string */ protected $table = 'my_flights'; }
主键
Eloquent 默认每张表的主键名为 id,你可以在模型类中定义一个 $primaryKey 属性来覆盖该约定。
此外,Eloquent 默认主键字段是自增的整型数据,这意味着主键将会被自动转化为 int 类型,如果你想要使用非自增或非数字类型主键,必须在对应模型中设置 $incrementing 属性为 false,如果主键不是整型,还要设置 $keyType 属性值为 string。
时间戳
默认情况下,Eloquent 期望 created_at 和 updated_at 已经存在于数据表中,如果你不想要这些 Laravel 自动管理的数据列,在模型类中设置 $timestamps 属性为 false:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /** * 表明模型是否应该被打上时间戳 * * @var bool */ public $timestamps = false; }
内容版权声明:除非注明,否则皆为本站原创文章。