Всем привет!
Как сгенерировать уникальный id в момент массовой вставки в базу данных?
При создании одиночной записи в базу, можно добиться подобного результата добавив в модель подобное:
protected static function boot()
{
parent::boot();
static::creating(function ($elem) {
$elem->{$elem->getKeyName()} = (string) Str::uuid();
});
}
public function getIncrementing()
{
return false;
}
public function getKeyType()
{
return 'string';
}
//Выполнив код:
Model::create([...]);
Но это не сработает, если применить Model::insert
Можно конечно создать массив с данными, в которых уже будет присутствовать уникальный uuid, и вставить эти данные методом "Model::insert", но насколько эти данные будут уникальными, если в один и тот же момент будут создаваться несколько массивов одновременно или с задержкой небольшой? Ведь пока первая операция не завершится, в базе нет данных, а значит вторая операция может на создавать уже не уникальные id.