Laravel Seeder - Обновите все записи с уникальным идентификатором (UUID) - PullRequest
3 голосов
/ 28 июня 2019

Я только что добавил UUID для своей таблицы пользователей.

Я хочу обновить все записи с уникальным UUID.

В моей сеялке у меня есть следующий код, который генерируетUUID и заполняет этот новый столбец в базе данных.Однако сгенерированный UUID одинаков в каждой строке.

public function run()
{
  DB::table('users')->update([
    'public_id' => Uuid::generate(4)->string
  ]);
}

Я бы хотел, чтобы UUID генерировался для каждого пользователя в базе данных.Таким образом, каждая строка имеет уникальный UUID.

Подсказка к этому SO-вопросу о помощи.

Пакет Laravel UUID, который я использую.

1 Ответ

5 голосов
/ 28 июня 2019

Он не работает, потому что он принимает только один сгенерированный uuid для всех пользовательских данных.

Вам необходимо просмотреть все данные модели, сгенерировать уникальный uuid и сохранить.

public function run(){
        $users = \App\User::get();

        try{
            DB::beginTransaction();
            foreach($users as $user){
                $user->public_id = Uuid::generate(4)->string;
                $user->save();  
            }
            DB::commit();
       }
       catch(Exception $e){  
           DB::rollback();
    }
   //if incase you get exception during database seeding.
}
...