首页 > 解决方案 > Laravel Eloquent:在表格中设置自定义格式的 ID

问题描述

有什么方法可以在创建时添加自定义格式的 ID?

例如,有一个表'Customers',在这个表中有一个主键 - 'ID(自动增量)'和一个唯一键'customer_id'

现在,当我创建一个新客户时,“ID”是自动递增的,因此它会自动在 DB 中设置。

我想在创建时将“customer_id”设置为“2018-0001”。CurrentYear-000 INSERTED_ID

标签: laravel-5eloquent

解决方案


您可以created为此使用模型事件。文档

Eloquent 模型触发多个事件,允许您在模型的生命周期中挂钩以下几点:retrieved, creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored. 每次在数据库中保存或更新特定模型类时,事件允许您轻松执行代码。每个事件都通过其构造函数接收模型的实例。

创建后,customer您可以生成customer_id并保存它:


Customer.php

use Carbon\Carbon;

class Customer extends Model
{
    protected static function boot()
    {
       parent::boot();

       static::created(function ($obj) {
          $obj->customer_id = Carbon::now()->year.'-000'.$obj->id;
          $obj->save();
      });
    }
}

推荐阅读