如何在laravel中的json列中查询?

Suc*_*Man 1 mysql json laravel eloquent laravel-5.6

我使用laravel 5.6

我有一个领域。该字段的数据类型为json

像这样的字段(desc字段)的值:

[
{"code": "1", "club": "CHE", "country": "ENGLAND"}, 
{"code": "2", "club": "BAY", "country": "GERMANY"}, 
{"code": "3", "club": "JUV", "country": "ITALY"}, 
{"code": "4", "club": "RMA", "country": "SPAIN"}, 
{"code": "5", "club": "CHE", "country": "ENGLAND"}, 
{"code": "6", "club": "BAY", "country": "GERMANY"}, 
{"code": "7", "club": "JUV", "country": "ITALY"}, 
{"code": "8", "club": "RMA", "country": "SPAIN"}, 
{"code": "CODE", "club": "CLUB", "country": "COUNTRY"}
]
Run Code Online (Sandbox Code Playgroud)

我想检查俱乐部的钥匙是否具有“ CHE”值

我这样尝试:

->where('desc->club','=', 'CHE')->get();
Run Code Online (Sandbox Code Playgroud)

但这不起作用

我怎么解决这个问题?

小智 7

MyModel::whereJsonContains('desc->club', 'CHE')->first();
Run Code Online (Sandbox Code Playgroud)


Jon*_*eir 6

尝试这个:

->whereRaw('JSON_CONTAINS(`desc`, \'{"club":"CHE"}\')')
Run Code Online (Sandbox Code Playgroud)


Chr*_*sco 5

只需使用SQL LIKE运算符

->where('desc', 'like', '%"club": "CHE"%');
Run Code Online (Sandbox Code Playgroud)