Выберите ключ поля JSON в подзапросе Adonis Lucid
У меня есть две простые ясные модели, называемые Parent
(стол родителей) и Child
(стол детский). Таблица детей имеет поле JSON, которое мы называем jsoncolumn
,
Моя родительская модель имеет отношение отношение к модели "Дитя".
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
предложение, оператор заключен в кавычки... поэтому сгенерированный выбор:
ВЫБЕРИТЕ "children"."Jsoncolumn->'key'"
Обратите внимание, что он также не позволяет использовать какую-либо функцию. Все, что не является именем столбца, на самом деле не будет работать.
Какой будет правильный синтаксис для этого?
0 ответов
Чтобы сделать запрос к JSON
Тип данных на MySQL Server вам нужно сделать следующим образом
SELECT columnOne, jsonColumn->'$.key' as Data FROM TableName;
Я имею в виду, что у вас неправильный синтаксис, так как вы не используете $.
подписать перед builder.select(Database.raw("jsoncolumn->'$.key' AS foo"));
Зачем?
Короткий синтаксис, который вы используете, требует его, как показывают мои предыдущие примеры