Я новичок в 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 дня. Заранее спасибо.
автоматическое увеличение первого столбца, если вам нужно добавить еще одно значение вставки столбца, например, принять максимальное значение этого столбца добавить +1, а затем сохранить
Пример: имя столбца log_id тогда в вашем магазине функция займет максимум log_id и добавить +1
$current_id = DB::table('logs')->max('log_id');
'log_id' => $current_id + 1,
или измените свой Я бы столбец как целое число и принять максимальную добавленную стоимость +1
Других решений пока нет …