Laravel 4 - Eloquent质量分配在更新后创建空记录

时间:2013-03-27 13:12:51

标签: php laravel laravel-4 mass-assignment eloquent

我刚刚将L4(骨架和包)更新到最新版本。

现在,当我尝试创建其中一个模型的新实例并将其保存到数据库时,除了时间戳和主键外,我得到一个空记录。

此行为会在所有模型(用户,出价,项目等)上持续存在,因此这不是本地问题。

我试过了两次

Project::create($project);

following this thread

$new_project = new Project;

$new_project->fill($project);

$new_project->save();

但结果是一样的:空记录。

2 个答案:

答案 0 :(得分:5)

因此,从docs结果来看,由于安全原因,默认情况下会阻止批量分配(例如,从表单中获取所有数据而不指定字段(Input::all())并按原样保存它如果客户端通过添加一个名称与DB中的字段对应的字段来操作表单,则DB可能会导致分配不需要的字段。

要指定允许分配的字段,应该将有问题的字段显式添加为 white-list 到模型上受保护的$fillable数组,或者,使用$guarded数组

创建黑名单

答案 1 :(得分:0)

我遇到了同样的问题,发现解决方案希望帮助别人

$new_project = new Project;

$new_project->unguard();

$new_project->create($project);

$new_project->reguard();


or

Project::unguard();
$new_project = Project::create($project);
$new_project->reguard();