Мне удалось написать необработанный запрос, который позволил бы мне получить все продукты внутри категории, даже продукты внутри подкатегорий категории, вплоть до дерева.
Я использую необработанный запрос, потому что я не знал, как использовать для этого / knex api.
Проблема, с которой я столкнулся, заключается в том, что я также хочу присоединиться к соответствующим таблицам, в данном случае для моих продуктов у меня есть "products_meta" и "category"
Несмотря на то, что я знаю, что могу просто изменить необработанный запрос, я хотел бы знать, существует ли более простой способ с использованием некоторых методов возражения / knex, таких как joinEager.
Мой код до сих пор выглядит примерно так: (приведенная ниже строка sql просто получает все продукты внутри категории и ее подкатегорий, это не проблема)
const sql = `
with recursive get_subcols as(
select id
from collections
where "parentId" = ${req.params.id}
union all
select c.id
from collections as c
inner join get_subcols gs
on c."parentId" = gs.id
), get_all_collections as (
select id from collections
where id = ${req.params.id}
union
select * from get_subcols
), get_all_products as (
select p.*, c.name as collection
from products as p
join "collectionProducts" cp
on cp."productId" = p.id
join get_all_collections gac
on cp."collectionId" = gac.id
left join collections as c
on cp."collectionId" = c.id
)
select * from get_all_products;
`
const result = await Collection.knex().raw(sql)
const products = result.rows
Мой вопрос: возможно ли сделать что-то вроде этого:
.joinEager('[meta, collections]')
к результатам, чтобы я также мог объединить связанные таблицы в результате?