Eloquent :创建和配置模型
Eloquent :创建和配置模型
介绍
Eloquent 是一个 ActiveRecord ORM ,提供了统一的接口来与不同类型的数据库进行交互
使用 Artisan 生成 Eloquent Model
下面的命令会创建一个名为 app/Email.php 的文件
php artisan make:model Email
默认的模型结构如下 :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Email extends Model
{
//
}
如果希望生成模型的同时生成迁移 ,可以使用 -m
或 --mgration
选项
配置属性
属性 | 说明 |
---|---|
$table | 模型对应的数据表名称 |
$primaryKey | 表的主键名称 |
$incrementing | 主键的值是否自动递增 |
$keyType | 主键的类型 |
$timestamps | 是否自动维护时间戳 |
$dateFormat | 时间字段的存储格式 |
CREATED_AT | 时间字段的名称 |
UPDATED_AT | 时间字段的名称 |
$attributes | 数据表字段的默认值 |
$fillable | 可以被批量赋值的属性 |
$guarded | 不可以被批量赋值的属性 |
数据表名称
如果模型的名称是 Email ,那么 Eloquent 默认会假设 Email 模型对应的数据表名称是它的复数形式
emails
/**
* 与模型关联的表名
*
* @var string
*/
protected $table = 'email';
主键
Eloquent 会假设每张数据表都有一个名为 id
字段是主键
/**
* 重定义主键
*
* @var string
*/
protected $primaryKey = 'email_id';
Eloquent 会假设主键是一个自增的整数值 ,意味着默认情况下主键会自动转换为 int
类型
/**
* 指示模型主键是否是自动递增的
*
* @var bool
*/
public $incrementing = false;
如果你的主键不是一个整数 ,你需要将模型的 $keyType 属性设置为 string
/**
* 主键的类型
*
* @var string
*/
protected $keyType = 'string';
时间戳
Eloquent 会假设数据表中存在 created_at 和 updated_at 字段
/**
* 指示是否自动维护时间戳
*
* @var bool
*/
public $timestamps = false;
设置时间字段的存储格式
/**
* 模型日期列的存储格式。
*
* @var string
*/
protected $dateFormat = 'Y-m-d H:i:s';
自定义时间字段的名称
const CREATED_AT = 'creation_date';
const UPDATED_AT = 'last_update';
默认值
/**
* 模型的默认属性值
*
* @var array
*/
protected $attributes = [
'host' => 'gmail.com',
];
批量赋值
对表中的数据进行批量赋值时 ,要确保对应属性可以被批量赋值 ,Eloquent 模型默认所有属性都不可批量赋值
可以通过 $fillable 和 $guarded 来配置允许批量赋值的属性
/**
* 可以被批量赋值的属性。
*
* @var array
*/
protected $fillable = ['name'];
$fillable 和 $guarded 属性同时只能存在一个
/**
* 不可批量赋值的属性。
*
* @var array
*/
protected $guarded = [];
如果想让所有属性都可以批量赋值 ,可以将 $guarded 设置成空数组