Laravel 5.2 eloquent сохранить автоматическое увеличение pgsql исключение на тот же идентификатор

Я новичок в laravel 5.2 и postgres pgsql.
У меня есть стол с именем logs

Schema::create('logs', function(Blueprint $table){
$table->bigIncrements('id');
$table->text('exception');
$table->dateTime('created_at');
});

и модель соответственно Log

    class Log extends Model{
public $incrementing = true;
public $timestamps = false;
}

Согласно моему пониманию (может быть неправильно). Если id не задано, тогда Eloquent помещает последний использованный идентификатор + 1 (но не ноль).
Если я сначала экономлю Log, конечно, id будет 1 для него и будет 2 для следующего.
Предположим, я добавил только одну запись с Eloquent save() с id=1

Но тут возникает проблема: если я как-то (вручную с помощью запроса вставки или с помощью CSV-файла) добавлю новые записи с идентификатором 2,3,5,8 так далее. в таблице. Но программно на save,
Красноречивые еще наборы id = 2 на секунду Log запись / юридическое лицо.

Я сейчас экономлю вот так

$l = new Log();
$l->exception = "some exception";
$l->created_at = Carbon::now()->toDateTimeString();

while(true){
try{
$l->save(); //it auto increments the id on each try
break;
}catch(\Exception $e){
continue;
}
}

Следите за циклом, вышеуказанное решение работает для меня, и оно автоматически добавит запись с id = 4 (приведены выше условия). Выдает и ловит два исключения для идентификаторов 2 и 3.

Мне не нравится это решение, пожалуйста, предложите мне что-нибудь еще, я ищу исправление без петли, почти 2 дня. Заранее спасибо.

2

Решение

автоматическое увеличение первого столбца, если вам нужно добавить еще одно значение вставки столбца, например, принять максимальное значение этого столбца добавить +1, а затем сохранить

Пример: имя столбца log_id тогда в вашем магазине функция займет максимум log_id и добавить +1

$current_id = DB::table('logs')->max('log_id');

'log_id' => $current_id + 1,

или измените свой Я бы столбец как целое число и принять максимальную добавленную стоимость +1

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]