Laravel 6 - 唯一自定义 ID 在 table 变空后不会递增
Laravel 6 - Unique custom id doesn't increment after table get empty
现状
我有自定义唯一增量使代码看起来像这样
但是当我将 table 设为空并添加新值时,它看起来像这样
预期情况
在我将 table 设为空并进行新输入后,custom_id
应该跟在 id
之后
模特
class Transaction_in extends Model
{
protected $table = 'transaction_ins';
protected $primaryKey = 'idTransactionsIN';
public $timestamps = true;
public $incrementing = false;
protected $guarded = [];
public static function getidTransactionsIN(){
DB::table('transaction_ins')->orderBy('id','desc')->take(1)->get();
}
}
控制者
public function store(Request $request)
{
$request->validate([
'transaction_in_date' => 'required',
]);
Transaction_in::getidTransactionsIN();
$newtransaction_inId = Transaction_in::max('id') + 1;
$Getnewtransaction_inId = sprintf('TIN%04d', $newtransaction_inId);
$transaction_in = new Transaction_in();
$transaction_in->idTransactionIN = $Getnewtransaction_inId;
$transaction_in->date = $request->input('transaction_in_date');
$transaction_in->save();
}
可以在创建模型后设置custom_id
,在操作较多的情况下更安全一些:
public function store(Request $request)
{
$request->validate([
'transaction_in_date' => 'required',
]);
$transaction_in = Transaction_in::create(['date' => $request->input('transaction_in_date')]);
$transaction_in->update(['custom_id' => sprintf('TIN%04d', $transaction_in->id)]);
}
为了以防万一,您还应该将其包装在 database transaction.
中
现状
我有自定义唯一增量使代码看起来像这样
但是当我将 table 设为空并添加新值时,它看起来像这样
预期情况
在我将 table 设为空并进行新输入后,custom_id
应该跟在 id
模特
class Transaction_in extends Model
{
protected $table = 'transaction_ins';
protected $primaryKey = 'idTransactionsIN';
public $timestamps = true;
public $incrementing = false;
protected $guarded = [];
public static function getidTransactionsIN(){
DB::table('transaction_ins')->orderBy('id','desc')->take(1)->get();
}
}
控制者
public function store(Request $request)
{
$request->validate([
'transaction_in_date' => 'required',
]);
Transaction_in::getidTransactionsIN();
$newtransaction_inId = Transaction_in::max('id') + 1;
$Getnewtransaction_inId = sprintf('TIN%04d', $newtransaction_inId);
$transaction_in = new Transaction_in();
$transaction_in->idTransactionIN = $Getnewtransaction_inId;
$transaction_in->date = $request->input('transaction_in_date');
$transaction_in->save();
}
可以在创建模型后设置custom_id
,在操作较多的情况下更安全一些:
public function store(Request $request)
{
$request->validate([
'transaction_in_date' => 'required',
]);
$transaction_in = Transaction_in::create(['date' => $request->input('transaction_in_date')]);
$transaction_in->update(['custom_id' => sprintf('TIN%04d', $transaction_in->id)]);
}
为了以防万一,您还应该将其包装在 database transaction.
中