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 设置成空数组

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~