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.