Laravel 播种机 - 使用唯一 ID (UUID) 更新所有记录

Laravel Seeder - Update all records with a Unique ID (UUID)

我刚刚为我的用户添加了一个 UUID table。

我想用唯一的 UUID 更新所有记录。

在我的播种机中,我有以下代码生成 UUID 并填充数据库中的这个新列。但是,生成的UUID在每一行中都是相同的。

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

我希望为数据库中的每个用户生成 UUID。所以每一行都有一个唯一的 UUID。

The Laravel UUID Package I'm using.

它不起作用,因为它只为所有用户数据生成一个 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.
}