laravel-5 - Laravel Eloquent:在表格中设置自定义格式的 ID
问题描述
有什么方法可以在创建时添加自定义格式的 ID?
例如,有一个表'Customers',在这个表中有一个主键 - 'ID(自动增量)'和一个唯一键'customer_id'
现在,当我创建一个新客户时,“ID”是自动递增的,因此它会自动在 DB 中设置。
我想在创建时将“customer_id”设置为“2018-0001”。CurrentYear-000 INSERTED_ID
解决方案
您可以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();
});
}
}
推荐阅读
- javascript - 如何在 Stripe 中获取附加到客户的订阅
- c++ - 如何在不中断整个循环的情况下跳过 for 循环交互 - C++
- cluster-computing - 聚类相同大小的簇
- ssis - SSIS在移动时将日期添加到文件名
- android - 将数据从 android/iOS 应用程序发送到 Kafka 或 Hadoop
- java - 插件,编译单元
- rest - Spring-boot:在 REST @ 服务器端设置超时
- javascript - Jupyter nbconvert 创建的reveal.js 幻灯片中的滚动问题
- jenkins - 无法使用主动选择插件填充动态参数
- vb.net - 邮箱名称不允许。发件人地址被拒绝。未登录