如何使用laravel访问mariadb中的json属性?

ijnw1ujt  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(353)

我有一个表,其中有一列名为'data',它包括:

{"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.....

我知道这段代码适用于MySQL5.7,但我的服务器运行的是“10.1.34-mariadb-0”,我无法更改为mysql,因为plesk不支持它。

7uhlpewt

7uhlpewt1#

mariadb目前不支持json类型。
如果你陷入困境,需要它来与mariadb合作。尝试使用元表。

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

相关问题