我有一个列以
的形式在MySQL表中以JSON格式存储数据computerName
但是自从Laravel 5中引入NodeJs
以来,我一直计划重新格式化我的数据和代码以用于数组转换。
没有找到直接转换提示,所以尝试了这个:
a:3:{s:2:"12";s:0:"";s:2:"34";s:0:"";s:2:"56";s:10:"1234567890";}
$cast
代码执行没有错误,但什么也没发生。 colB是空的。 虽然Laravel可能不喜欢我的JSON格式,但我将代码更改为:
protected $casts = ['colA' => 'json', 'colB' => 'array'];
foreach(Model::all() as $item){
$item->colB = $item->colA;
$item->save();
}
但是我遇到foreach(Model::all() as $item){
$item->colB = unserialize($item->colA);
$item->save();
}
错误,即使我protected $casts = ['colB' => 'array'];
我得到了一个完美的字符串。而且,这更令人惊讶,如果我unserialize() expects parameter 1 to be string
我得到一个完美的数组。
我可能是因为我的数据导致了这种情况,并尝试使用一个单行无效的表格。
任何提示赞赏!
答案 0 :(得分:0)
如果您使用的是$fillable
和$guarded
,请确保已将colB添加到$fillable
,以便您可以对其进行更新。
E.g。
protected $fillable = [ 'colA', 'colB' ];
可能是你的第一个脚本没有改变数据库中的任何内容的原因......
另一个选择是保护模型中的所有内容......
protected $guarded = [];