У меня есть две простые ясные модели, называемые Parent
(таблица родителей) и Child
(таблица детей). В таблице детей есть поле JSON, которое мы называем jsoncolumn
.
Моя родительская модель имеет отношение ownToMany к модели Child.
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'"
Обратите внимание, что он также не позволяет использовать какую-либо функцию. Все, что не является именем столбца, фактически не будет работать.
Какой будет правильный синтаксис для этого?