我有一个表,其中有一个名为“数据”的列,该列包括:
{"id":1074,"opened":true,"subscribed":true}
我想要一个按这些属性过滤的查询。
我尝试过
->whereRaw('JSON_EXTRACT(data, "$.opened")', false)
和
->where('data->opened', false)
响应:
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '>'$."id"' = ? and `data`->'$."opened"' = false order by `created_at` desc' at line 1 in.....
我知道这段代码可用于MySQL 5.7,但是我的服务器运行的是“ 10.1.34-MariaDB-0”,由于Plesk不支持它,因此我无法更改为MySQL。
答案 0 :(得分:1)
到目前为止,MariaDB不支持Json类型。
如果您遇到困难并需要它与MariaDB一起使用。尝试使用元表。
+----+------------+------------+-------+
| id | foreign_id | name | value |
+----+------------+------------+-------+
| 1 | 1074 | subscribed | 1 |
+----+------------+------------+-------+
| 2 | 1074 | opened | 0 |
+----+------------+------------+-------+