Laravel Eloquent:在表格中设置自定义格式的ID

时间:2018-10-12 08:25:22

标签: laravel-5 eloquent

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

例如,有一个表“ Customers”,该表中有一个主键-“ ID(自动递增)”和一个唯一键“ customer_id”

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

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

1 个答案:

答案 0 :(得分:0)

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

  

雄辩的模型会触发多个事件,使您可以进入   模型生命周期中的以下几点:retrievedcreatingcreated,   updatingupdatedsavingsaveddeletingdeletedrestoring,   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();
      });
    }
}