我有一个表(比如发票),其中有一个主键(自动增量)。 但我需要另一个引用号,它也应该是唯一的,并且应该基于以下模式。
INV-{Ymd}-{unique number for that day}
地点: INV - 是联系人前缀 {Ymd} - YYYMMDD 格式的日期 {unique number for that day} - 是当天的序列号。(应自动递增,但每天应从 0 开始。
示例
- INV-20160909-0001
- INV-20160909-0002
- INV-20160910-0001
最佳答案
您可以使用同一个表来完成此操作,无需创建另一个表或列。
假设您的列名称是发票表中的reference_number。
首先,从表中获取最新记录。(您可以通过主键或插入日期获取它)
$data=Invoice::find()->select('reference_number')->orderBy(['your_primary_key' => SORT_DESC])->one();
if($data) // record found
{
$temp= explode('-',$$data['reference_number']); // devide data in array
// compare with today's date,
if((int)$temp[1]==(int)date('Ymd'))
{
// if today's date match than increase number and create reference_number
$reference_number="INV".date('Ymd').((int)$temp[2]+1);
}
else // reference_number is from old date so you can create from today's date
{
$reference_number="INV".date('Ymd')."0";
}
}
else // record not found,(no record in your table)
{
// you can directly create reference_number from today's date
$reference_number="INV".date('Ymd')."0";
}
关于php - 根据模式生成唯一的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39545081/