Php larvel:fill()和update()在我使用$request->;全部()但填写($request->;only(';…';)
我有一些JSON格式的专栏。 例如,数据库中的“银行”列如下所示: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...", "
{"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文档:“您需要在模型上指定可填充或保护属性,因为默认情况下,所有有说服力的模型都可以防止质量分配。”