Php larvel:fill()和update()在我使用$request->;全部()但填写($request->;only(';…';)

Php larvel:fill()和update()在我使用$request->;全部()但填写($request->;only(';…';),php,json,laravel,eloquent,Php,Json,Laravel,Eloquent,我有一些JSON格式的专栏。 例如,数据库中的“银行”列如下所示: {"name":"Bank of America", "card":"6037...", "account":"321354...", "expire" : "2018-12-09"} protected $casts = [ 'bank' => 'array', ] 我在模型中使用了LaravelCast,如下所示: {"name":"Bank of America", "card":"6037...", "

我有一些JSON格式的专栏。 例如,数据库中的“银行”列如下所示:

{"name":"Bank of America", "card":"6037...", "account":"321354...", "expire" : "2018-12-09"}
protected $casts = [
    'bank' => 'array',
]
我在模型中使用了LaravelCast,如下所示:

{"name":"Bank of America", "card":"6037...", "account":"321354...", "expire" : "2018-12-09"}
protected $casts = [
    'bank' => 'array',
]
在“查看我的表单”文件中,由以下名称命名:

<input name="bank[name]" ...>
<input name="bank[account]" ...>
<input name="bank[card]" ...>
一切正常。但是当我用这个的时候

$profile->fill($request->only('bank'));
$profile->save();
$profile->fill($request->all());
$profile->save();
我犯了这个错误

SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“银行[卡]”(SQL:update

怎么了

解决方案,感谢@Jonas::

问题在于:在Requests->myFormRequest中,我清理了数据 关于这一点:

if( $this->bank['card'] )  { $input['bank[card]']  = preg_replace("/[^0-9]/", "", $this->bank['card']); }
数组是错误的,我把它改成了这个和所有的东西 工作得很好

if( $this->bank['card'] )  { $input['bank']['card']  = preg_replace("/[^0-9]/", "", $this->bank['card']); }

我不确定这一点,但在错误消息中我看到银行[购物车]。
在你的html中有银行[卡],可能只是输入错误。

请在问题中包括
$request->all()
的输出。你是否将
银行
添加到
$filleble
受保护的$guarded=['user\u id','username','password','status','type',];受保护的$casts=['bank'=>'array','post'=>'array','house'=>'array',];
$filleble的值是多少?@Jonas Nothing.没有
$filleble
。基于Laravel文档:“您需要在模型上指定可填充或保护属性,因为默认情况下,所有有说服力的模型都可以防止质量分配。”