Laravel 6 - уникальный пользовательский идентификатор не увеличивается после того, как таблица пуста - PullRequest
2 голосов
/ 20 октября 2019

Текущая ситуация

У меня есть пользовательское уникальное увеличение, при котором код выглядит следующим образом

enter image description here

, нокогда я делаю эту таблицу пустой и добавляю новое значение, она выглядит следующим образом

enter image description here

Ожидаемая ситуация

послеЯ сделал таблицу пустой и сделал новый ввод, custom_id должен следовать id

enter image description here

Модель

    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();
}

1 Ответ

2 голосов
/ 20 октября 2019

Вы можете установить 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)]);
}

Вы также должны на всякий случай заключить его в транзакцию базы данных .

...