【发布时间】:2020-07-28 07:46:27
【问题描述】:
我想从旧数据库中导入数据,所以我想填写一些字段,例如password。 User 模型如下所示:
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 认为我在做 Mass assignment...
我应该改变什么来完成这项工作?
我看过其他类似的问题,例如 this 一个,但我仍然不知道如何绕过 Laravel 保护。
【问题讨论】:
-
你需要user_id和old_passoword值
-
其实我很惊讶你的代码不起作用。批量赋值意味着,您将一组值传递给 create 函数?!
-
这段代码应该可以工作,它不是批量作业,我什至做了一个单元测试来测试它,一切正常
-
我觉得你正在做的事情与
$user->password = User::find($user->id)->password;相当,这不会改变任何事情。可以分享get_old_password吗? -
@ClémentBaconnier 你说得对,这是一个 X-Y 问题...我之前没有填充表格就更新了表格...
标签: php laravel eloquent fillable