Php 是否可以仅在Laravel 4中保护更新列?
您有Php 是否可以仅在Laravel 4中保护更新列?,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,您有$filleble和$guarded来防止质量分配。但是如何保护某些db列,使其无法更新?您可以覆盖模型中的isFillable(),并使用exists属性来确定模型是否已经在数据库中(如果您正在创建或更新)。此外,您还需要另一个属性来配置这些属性。我们称之为$guardeforupdate: protected $guarded = ['foo']; protected $guardedForUpdate = ['bar']; public function isGuardedForUp
$filleble
和$guarded
来防止质量分配。但是如何保护某些db列,使其无法更新?您可以覆盖模型中的isFillable()
,并使用exists
属性来确定模型是否已经在数据库中(如果您正在创建或更新)。此外,您还需要另一个属性来配置这些属性。我们称之为$guardeforupdate
:
protected $guarded = ['foo'];
protected $guardedForUpdate = ['bar'];
public function isGuardedForUpdate($key){
return in_array($key, $this->guardedForUpdate) || $this->guardedForUpdate == array('*');
}
public function isFillable($key){
if($this->exists && $this->isGuardedForUpdate($key)){
return false;
}
return parent::isFillable($key);
}
foo
在任何情况下都不会分配质量。然而,bar
在创建新模型时可分配质量,但在更新模型时不可分配质量。仅通过质量分配或直接设置无法更新质量?($model->foo='bar'
)当然,手动设置控制器中要更新的字段是一种解决方案。如果有一种大规模分配的方式,那就太好了。不,我是问是否可以手动设置它们。换句话说,保护应该只针对批量分配还是针对设置模型属性的所有可能方法?我认为批量分配看起来非常有前景。我要试试看!