Fragster
@Fragster
помогло? отметь решением!

Как с помощью sequelize получить запрос такого вида?

Хочу получить что-то типа
SELECT 
`template`.`id`, 
... 
(SELECT COUNT(*) FROM `templateSets` WHERE `template`.`id` = `templateSets`.`templateId`) AS `setCount` 
FROM `templates` AS `template`

Вот так неправильно:
models.template.findAll({
    include: [{
      model: models.templateSet, 
      attributes: [[models.sequelize.fn('COUNT', models.sequelize.col('*')), 'setCount']]
    }]
  })
, оно лепит джоин и включает templateSets.id в список полей, не совсем то, что нужно
  • Вопрос задан
  • 864 просмотра
Пригласить эксперта
Ответы на вопрос 1
@paldraken
Попробуйте такую конструкцию.
db.User.findAll({
    attributes: Object.keys(db.User.attributes).concat([
        [db.sequelize.literal('(SELECT count(*) FROM user_phones WHERE user_phones.user_id = user.id)'), 'total']
    ])
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы