首页 > 解决方案 > laravel whereJson 包含在 laravel 审计中

问题描述

在新值列中auditable_id=2239,我是否正在获取正确的new_values数据{"video_status_ids":"[4,10]"}

在修补程序中

App\Video::find(2239)->audits()->get()

集合包含

OwenIt\Auditing\Models\Audit {#3140
         id: 322113,
         user_type: "App\User",
         user_id: 3,
         event: "updated",
         auditable_type: "App\Video",
         auditable_id: 2239,
         old_values: "{"video_status_ids":"[4, 8]"}",
         new_values: "{"video_status_ids":"[4,10]"}",
         url: "http://example.com?",
         ip_address: "ipaddr",
         user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.
36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36",
         tags: null,
         created_at: "2019-03-04 13:30:57",
         updated_at: "2019-03-04 13:30:57",
       },

但对于

1.App\Video::find(2239)->audits()->whereJsonContains('new_values->video_status_ids', 10)->get()

2.App\Video::find(2239)->audits()->where('new_values->video_status_id', 10)->get()

3.App\Video::find(2239)->audits()->where('new_values->video_status_ids', "[10]")->get()

我正进入(状态

=> Illuminate\Database\Eloquent\Collection {#138
     all: [],
   }

但我应该得到上述记录。

解决方法

App\Video::find(2239)->audits()->where('new_values', 'like','\{"video_status_ids"%10%')->get()

App\Video::find(2239)->audits()->where('new_values->video_status_ids', 'like',"%10%")->get();

但如果有 101、100 等,这将不起作用。仅针对我的要求,就可以了。

标签: jsonlaravellaravel-auditing

解决方案


推荐阅读