Laravel 模型字段序列化无法更新的问题 [已解决]
在阅读了文档后,发现laravel可以在新建和读取的时候对某一个字段自动进行序列化,正好我的商品表Product
拥有多个参数,我又不想弄成HasMany
的关联关系,于是尝试一下,我拥有一个模型ProductParam
,定义需要序列化的字段param
class ProductParam extends Model
{
//将param字段序列化
protected $casts=['param'=>'array'];
}
新建商品
//新建商品动作
public function store(ProductPost $request)
{
DB::transaction(function () use ($request) {
//插入数据到商品表
$product = Product::create($request->all());
//插入数据到商品描述表
$product->description()->create([
'description' => $request->input('description'),
'editor-html-code' => $request->input('editor-html-code')
]);
//插入数据到商品参数表
$product->param()->create([
'param' => $request->input('param')
]);
}, 5);
}
截止到目前新建一切都是OK的,存到数据库里面字段也是自动转了json的.
编辑商品
//编辑商品动作
public function update(ProductPost $request, $id)
{
DB::transaction(function () use ($request, $id) {
$product = Product::find($id);
//更改商品表
$product->update($request->all());
//更改商品描述表
$product->description()->update([
'description' => $request->input('description'),
'editor-html-code' => $request->input('editor-html-code')
]);
//更新商品参数
$product->param()->update([
//为了方便沟通,定义下面这一行行号为#88
'param' => $request->input('param'),
]);
}, 5);
}
当我照这样来更新的时候,报错如下:
第88行 $request->input('param') 打印出来的值如下:
如果我将第88行的 'param' => $request->input('param'), 修改为 'param' =>99999, 那么此刻是可以更新成功的.
此贴中注释的4行代码是我按文档的示例修改而来,但是发现并没有作用,此问题困扰我多时,希望得到解答.不然我只能手动序列化了...
感谢关注 !
推荐文章: