【问题标题】:Laravel 6 - Unique custom id doesn't increment after table get emptyLaravel 6 - 表变空后唯一的自定义ID不会增加
【发布时间】:2019-10-20 10:59:24
【问题描述】:

现状

我有自定义唯一增量使代码看起来像这样

但是当我将该表清空并添加新值时,它看起来像这样

预期情况

在我将表格清空并进行新输入后,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();
}

【问题讨论】:

    标签: php laravel laravel-6


    【解决方案1】:

    你可以在创建模型后设置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 中。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多