我正在尝试找出Laravel附带的Model::unguard();
文件中Model::reguard();
和DatabaseSeeder.php
的目的是什么。我已经浏览了laravel网站上的播种文档并用Google搜索但是徒劳无功。
那么Model::unguard();
的目的是什么?假设Model::reguard();
正好相反。
答案 0 :(得分:66)
Model::unguard()
会暂时禁用模型的质量分配保护,因此您可以为所有模型属性设定种子。
请查看http://laravel.com/docs/5.1/eloquent#mass-assignment,了解有关Eloquent中质量分配的更多信息。
答案 1 :(得分:7)
以货币表为例 迁移文件
$table->double('rate');
$table->boolean('is_default')->default(false);
如果您使用的是货币模型文件,则唯一可填写的是
protected $fillable = [
'rate',
]
is_default
不能通过批量分配设置。例如
Currency::create([
'rate' => 5.6,
'is_default' => true
])
将返回货币
'rate' => 5.6
'is_default' => false
但是您可以按如下所示使用unguard和reguard大规模分配该字段
Model::unguard()
Currency::create([
'rate' => 5.6,
'is_default' => true
])
Model::reguard()
然后将使用创建模型
'rate' => 5.6
'is_default' => true