我将destinations字段存储为json类型mysql
示例列值 ["Goa", "Moonar", "Kochi"]
我想获得匹配的所有行goa作为目的地
但是,此行查询返回所需的结果
SELECT * FROM `packages`
WHERE JSON_CONTAINS(destinations, '["Goa"]');
Run Code Online (Sandbox Code Playgroud)
但是上述查询的雄辩等价是什么?
Laravel版本5.3
型号名称 :Search
是否可以通过 mysql 的 json 数组中的值(而不是索引)删除元素?例如:
# ['new', 'orange']
update waitinglist SET new = JSON_REMOVE("orange", '$') WHERE id=2;
# now it will be ['new']
Run Code Online (Sandbox Code Playgroud)
如果没有,是否有更好的方法来存储它,以便我可以根据需要删除元素?此外,数组中永远不会有重复项。
所以,我想notifications通过比较某个ID和data列来查询Laravel中的表.data列是这样的:
{
"Message": "some message",
"id": 3
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要选择ID等于3的所有通知.以下是我尝试执行此操作的方法:
DB::table('notifications')->where('data->id', '3')->get();
Run Code Online (Sandbox Code Playgroud)
但是这会引发以下错误:
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误; 检查与您的MariaDB服务器版本对应的手册,以便在'>'$附近使用正确的语法."id"'=?' 在第1行(SQL:select*from
notificationswheredata- >'$."id"'= 3)
我在这里失去理智,任何人都可以帮助我吗?