首页 > 解决方案 > Eloquent - SQLite 查询 json 列中的嵌套值

问题描述

使用 json 列时,我的测试环境出现问题。

在我的测试中,我使用了一个 SQLite 数据库,并且我意识到在访问 json 列时我的查询失败了......我不知道如何面对它。我正在运行最新版本的 Homestead。

我的问题是:

我有一个带有设置json 列的 User 模型,其中存储了一个名为mailing的布尔值,因此,如果我想查询所有带有 mailing true 的用户,我可以编写:

User::where('settings->mailing', true)->count();

然后,这给我一个错误:

SQLSTATE[HY000]: General error: 1 no such column: true (SQL: select count(*) as aggregate from "users" where json_extract("settings", '$."mailing"') = true)

在我使用 MySQL 的本地环境中,它工作正常,那么 SQLite 和 json 列查询是否存在问题?

另一个提示:在两种环境中使用whereNull()whereNotNull()工作正常时。

谢谢!

标签: jsonlaravelsqliteeloquent

解决方案


您需要将其用作字符串:

User::where('settings->mailing', 'true')->count();

是的,对 sqlLite有一些限制看看


推荐阅读