Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel雄辩ORM Firstor新质量分配异常_Php_Laravel_Laravel 4_Eloquent - Fatal编程技术网

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);