javascript - 在 Adonis Lucid 子查询上选择 JSON 字段键

标签 javascript postgresql activerecord adonis.js

我有两个简单的清晰模型,称为Parent(表父级)和Child(表子级)。子表有一个 JSON 字段,我们称之为 jsoncolumn

我的父模型与模型子模型具有belongsToMany 关系。

children() {
    return this.belongsToMany('App/Models/Child').pivotTable('parent_child');
}

我想从各个父项中获取父项的值,以及键 key 处的字段 jsoncolumn 中包含的值;为此,我想使用 PostgreSQL 运算符 ->。使用 Adonis Lucid 语法,它给出以下代码:

Parent.query().select('*')
    .with('children', builder => {
        builder.select(Database.raw("jsoncolumn->'key' AS foo"));
    }).fetch();

问题,下面的代码不起作用。即使在 Database.raw 子句中,运算符被引用...所以生成的选择是:

SELECT "children"."jsoncolumn->'key'"

请注意,它也不允许使用任何功能。实际上,任何不是列名的名称都不起作用。

执行此操作的正确语法是什么?

最佳答案

要在 MySQL 服务器上查询 JSON 数据类型,您需要按以下方式执行

SELECT columnOne, jsonColumn->'$.key' as Data FROM TableName;

我的意思是你的语法不正确,因为你在 builder.select(Database.raw("jsoncolumn->'$.key' AS foo"之前没有使用 $. 符号) ));

为什么?

您使用的简短语法需要它,正如我之前的示例向您展示的那样

关于javascript - 在 Adonis Lucid 子查询上选择 JSON 字段键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284497/

相关文章:

javascript - 使用 JavaScript 追加和选择多个 div

python - Django 迁移被杀死

mysql - GROUP BY 与 Active Record 的不同和计数 (Rails)

javascript - 将ajax post中的图像src设置为rest api

javascript - 单击传单形状时如何获取它的图层类型?

php - 脚本中的 Netbeans SQL 语法突出显示? (例如 PHP)

mysql - Active Record Join 语句优化

ruby-on-rails - 如何在 ActiveRecord 中从父级调用子模型范围?

javascript - 为什么我在这个 React/Typescript 应用程序中收到 no exported member 错误?

hibernate - 将 H2 数据转换为 PostgreSQL