更新 Laravel 中的不可填写字段?

Update non fillable field in Laravel?

我想从旧数据库导入数据,所以我想填写一些字段,例如passwordUser 模型如下所示:

class User extends Authenticatable
{
    protected $fillable = [
        'name', 'email', 'password', 'disabled_at'
    ];
}

在我的迁移中我有:

class ThumbnailSeeder extends Seeder
{
    public function run()
    {
        foreach(User::all() as $user) {
            $user->password = get_old_password($user->id);
            $user->save();
        }
    }
}

显然这行不通,因为 Laravel 认为我在做批量作业...

我应该更改什么才能使其正常工作?

我看过其他类似的问题,例如 一个,但我仍然不知道如何绕过 Laravel 保护。

您可以尝试使用 forceFill

foreach(User::all() as $user) {
    $user->forceFill(array('password ' => get_old_password($user->id));
    $user->save(); //Not sure if this is necessary
}

这是未经测试的代码。

正如我在评论中所建议的; 我觉得你做的事情更像是

foreach(User::all() as $user) {
    $user->password = User::find($user->id)->password; 
    $user->save();
}

这不会改变任何东西。