Sequelize version: 4.22.6, MySql version:5.7.8 I want to \'hasMany\' associated(CompanyUser) count in attibutes(at place of _user_count_) in query execution
this is something that works for me:
await PostModel.findAll({
group: ['posts.id'],
order: [['createdAt', 'DESC']],
include: [
{
model: CategoryModel,
attributes: ['title'],
where: { title: categoryTitle }
},
{ model: CommentModel },
{ model: UserModel, attributes: ['fullname', 'id'] }
],
attributes: [
'title', 'content', 'description', 'thumbnail', 'baner', 'createdAt', 'updatedAt',
[Sequelize.fn('COUNT', 'comment.id'), 'commentsCounter']
]
});
Associations:
please note to this part 'comment.id'
not 'comments.id'
.
if you use 'comments.id'
it throws this error for you: SequelizeDatabaseError: missing FROM-clause entry for table "comments"
MY MODELS - UPDATE: and comment
const { sequelize } = require('./index');
const { Model, DataTypes } = require('sequelize');
class CommentModel extends Model {};
CommentModel.init({
id: {
primaryKey: true,
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4
},
content: {
type: DataTypes.TEXT,
allowNull: false
}
}, {
sequelize,
modelName: 'comments',
timestamps: true,
paranoid: false
});
module.exports = CommentModel;