Php Laravel雄辩ORM Firstor新质量分配异常
我试图根据两个字段在数据库中查找一个模型,如果它不存在,则创建一个包含这两个值的新模型。我正试图使用Php Laravel雄辩ORM Firstor新质量分配异常,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我试图根据两个字段在数据库中查找一个模型,如果它不存在,则创建一个包含这两个值的新模型。我正试图使用firstOrNew方法来实现这一点: $store = Store::firstOrNew(array('ext_hash' => $ext_hash, 'ext_type_id' => EXT_TYPE_ID)); 但是,此代码正在抛出MassAssignmentException 避免此异常的唯一方法是在类级别分配filleble属性吗?根据文档,我应该能够在实例级别分配fil
firstOrNew
方法来实现这一点:
$store = Store::firstOrNew(array('ext_hash' => $ext_hash, 'ext_type_id' => EXT_TYPE_ID));
但是,此代码正在抛出MassAssignmentException
避免此异常的唯一方法是在类级别分配filleble
属性吗?根据文档,我应该能够在实例级别分配fillable
属性,而不是为整个类分配属性,但是我该怎么做呢
以下是商店
型号的代码:
<?php
use Illuminate\Database\Eloquent\SoftDeletingTrait;
class Store extends Eloquent{
use SoftDeletingTrait;
public function products(){
return $this->hasMany('Product');
}
public function faqs(){
return $this->hasMany('ProductFaq');
}
public function customer_questions(){
return $this->hasMany('CustomerQuestion');
}
public function users(){
return $this->hasMany('User');
}
}
可填充()
是您需要的方法:
$search = array('ext_hash' => $ext_hash, 'ext_type_id' => EXT_TYPE_ID);
$store = (Store::where($search)->first())
?: with(new Store)->fillable(array_keys($search))->fill($search);
或:
请将Store
模型的代码添加到您的问题中。我按照要求添加了代码。filleble
函数只会使此操作的属性可填充,对吗?准确地说:对于实例$Store
,因此此操作以及对其进行的任何后续操作。因此,在此操作之后,使用此方法在存储区上设置fillable的任何内容都可以在不再次调用此方法的情况下进行填充?fillable
是实例属性,而不是静态属性。因此,它只适用于您设置的实例。它不会影响存储
模型的其他/新实例。
$store = new Store;
$store = ($store->where($search)->first()) ?: $store->fillable(array_keys($search))->fill($search);