【问题标题】:Select a JSON field key on an Adonis Lucid subquery在 Adonis Lucid 子查询中选择 JSON 字段键
【发布时间】:2018-11-13 15:39:12
【问题描述】:

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

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

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

我想从各种父母那里获取父母的值,加上字段jsoncolumn中包含的值,键为key;为此,我想使用 PostgreSQL 运算符->。使用 Adonis Lucid 语法,它给出了以下代码:

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

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

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

请注意,它也不允许使用任何功能。实际上,任何不是列名的东西都行不通。

为了做到这一点,正确的语法是什么?

【问题讨论】:

    标签: javascript postgresql activerecord adonis.js


    【解决方案1】:

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

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

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

    为什么?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 2018-01-05
      相关资源
      最近更新 更多