迁移期间更新列值时的空值

时间:2016-07-28 16:41:43

标签: laravel laravel-5.2

我尝试将新列slug添加到现有表devices并为其分配随机唯一值。

以下是我的迁移脚本。

public function up()
    {

        Schema::table('devices', function(Blueprint $table){
            $table->string('slug');
        });

        $ids = DB::table('devices')->where('slug','')->pluck('id');

        //dd($ids);
        foreach ($ids as $id)
        {
            Device::whereId($id[0])->update(array('slug' => uniqid()));
        }


    }

迁移运行完美。但是迁移后,slug字段是一个空字符串。但它应该是一个独特的字符串。

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

我认为循环问题,试试这个:

foreach ($ids as $id)
{
    Device::whereId($id)->update(array('slug' => uniqid()));
}

另外,你可以做得更简单

public function up()
{
    Schema::table('devices', function(Blueprint $table){
        $table->string('slug');
    });

    Device::update(['slug' => uniqid()]);
}