Laravel Eloquent Json专栏更新不起作用

时间:2017-03-07 09:55:33

标签: json laravel eloquent

我正在使用php 7和MySQL 5.7。 attributes字段在我的表中定义为json列。

我在模型文件中定义了强制转换。

protected $casts = ['attributes' => 'array'];

添加数据时没有任何问题。

Transaction::create([

            'name'          => $this->name,
            'subject_id'    => $this->id,
            'subject_type'  => get_class($this),
            'attributes'    => ['status' => 0, 'type' => 'owner'],
            'user_id'       => $owner->id

        ]);

但我无法更新json数据。我试过这些方法:

$transaction = $this->transaction->where('content_key', $this->request->key)->first(); $transaction->update(['attributes->status' => 1]);

$transaction->attributes['status'] = 1; $transaction->save();

没有工作。

这些方法有效:

$transaction->update(['attributes'=> ['status' => 1, 'type' => 'owner'] ]);

(我需要更新此方法中的所有数据)

Db::table('transactions')->where('content_key', $this->request->key)->update(['attributes->status' => '1'])

我如何用Eloquent做到这一点?

1 个答案:

答案 0 :(得分:1)

所以遇到了和你一样的问题,我花了一天的时间来弄清楚幕后发生了什么。试试这个尺寸:

$transaction->setAttribute ('attributes->status, 1);

如果你问我,Laravel的文档严重缺乏关于这个主题的详细信息! (但后来我认为这只是Laravel的标准功能)。