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

时间:2019-06-28 08:19:59

标签: laravel uuid laravel-seeding

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

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

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

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

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

Hat tip to this SO question for help so far.

The Laravel UUID Package I'm using.

1 个答案:

答案 0 :(得分:5)

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