现状
我有自定义的唯一增量,使代码看起来像这样
但是当我将该表清空并添加新值时,它看起来像这样
预期情况
将表格清空并进行新输入后,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();
}
}
Controller
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 中.
关于php - Laravel 6 - 唯一的自定义 ID 在表变空后不会增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58472297/