Seofilter db 表有名为 category_ids 的 json 列。我想查询json col中存在的值。
而不是查询所有行并获取它们的 jsoncol 值然后爆炸等,由于服务器负载,我想用更少的对服务器的查询来做到这一点。
例如 [{60, 59, 57}] 或 [{55, 58, 60}] 所以 60 都存在。
Seofilter db 表有名为 category_ids 的 json 列。我想查询json col中存在的值。
而不是查询所有行并获取它们的 jsoncol 值然后爆炸等,由于服务器负载,我想用更少的对服务器的查询来做到这一点。
例如 [{60, 59, 57}] 或 [{55, 58, 60}] 所以 60 都存在。
Laravel 5.6.24 包括whereJsonContains()
:
DB::table('seofilter')->whereJsonContains('category_id', 60)->get();
DB::table('seofilter')->whereJsonContains('category_id', [60, 61, ...])->get();
MySQL 有一组 JSON 操作和搜索功能我相信你会在这里找到你想要的东西,从 JSON_CONTAINS
https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html #function_json-contains
显然符合您提供的示例。