<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Test extends Model
{
protected $table = "test";
protected $fillable = ['id', 'barcode'];
public static function boot()
{
parent::boot();
self::creating(function ($model) {
$increment = \DB::table($model->table)->increment('barcode') + 1;
$increment = str_pad($increment, 10, '0', STR_PAD_LEFT);
$model->barcode = (string)"ST" . $increment;
});
}
}
Вот пример модели, при создании новой модели Test::create(), создается новый с нормальным баркодом, но у предыдущего становиться в 1, при повторной попытке первый становить 2, второй в 1, а 3 в нормальном нужном формате. Поле баркода строка.
1,2,2018-07-10 11:07:19,2018-07-10 11:07:19
2,1,2018-07-10 11:07:23,2018-07-10 11:07:23
3,ST0000000003,2018-07-10 11:07:28,2018-07-10 11:07:28
вот миграция
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTestTable extends Migration
{
public function up()
{
Schema::create('test', function (Blueprint $table) {
$table->increments('id');
$table->string('barcode');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('test');
}
}