如何使用Laravel访问MariaDB中的json属性?

时间:2018-10-05 08:36:43

标签: mysql json laravel mariadb mariasql

我有一个表,其中有一个名为“数据”的列,该列包括:

{"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”,由于P​​lesk不支持它,因此我无法更改为MySQL。

1 个答案:

答案 0 :(得分:1)

到目前为止,MariaDB不支持Json类型。

如果您遇到困难并需要它与MariaDB一起使用。尝试使用元表。

+----+------------+------------+-------+
| id | foreign_id | name       | value |
+----+------------+------------+-------+
| 1  | 1074       | subscribed | 1     |
+----+------------+------------+-------+
| 2  | 1074       | opened     | 0     |
+----+------------+------------+-------+