Ahmed Yehia2 نشر 13 فبراير 2022 أرسل تقرير نشر 13 فبراير 2022 (معدل) ازاي اجيب عدد الassosiactions في علاقة many to many في sequelize Post.belongsToMany(models.User, { as: 'UserLikes', through: models.likes, foreignKey: 'postId' }); User.belongsToMany(models.Project, { as: 'UserLikes', through: models.likes, foreignKey: 'userId' }); تم التعديل في 13 فبراير 2022 بواسطة شرف الدين2 توضيح العنوان وتنسيق الشفرة البرمجية 1 اقتباس
0 شرف الدين حفني نشر 13 فبراير 2022 أرسل تقرير نشر 13 فبراير 2022 يمكنك تنفيذ المطلوب عبر إستخدام الدالة COUNT , حيث في حالتنا هنا نريد الحصول على عدد المُعجبين والذي يمكن تنفيذه كالتالي بإستخدام sql select COUNT(UserLikes.PostId) from Post left join UserLikes on Post.id = UserLikes.PostId وفي حالة أردنا عرض المنشور وبجانبه عدد المعجبين يمكننا إستخدام الدالة count مع الدالة group by لأن بدون إستخدام group by سيتم عرض فقط المنشورات التي لديها معجبين, ويمكننا تمثيل ذلك بكود sql كالتالي select Post.*, COUNT(UserLikes.PostId) from Post left join UserLikes on Post.id = UserLikes.PostId group by Post.id حيث يتم عرض جميع المنشورات حسب الid الخاص بهم بالإضافة إلى عدد المُعجبين, ويمكننا تنفيذ الشفرات السابقة إلى أكواد sequelize كالتالي const posts = await Post.findAll({ attributes:[ [Sequelize.fn("COUNT", Sequelize.col("UserLikes.id")), "likes"] ], include:{model:User,as:"UserLikes" , attributes:[]}, group: ['Post.id'], subQuery: false, limit: limit, offset: limit * pageNo }) كما تلاحظ قمنا في خانة attributes بوضع attribute واحد فقط وهو مجموع الحقل UserLikes.id لنعلم كم إعجاب لكل منشور حسب ظهور المُعرف الخاص بالمُعجب, كما إستخدمنا أيضًا subQuery ب false حتى نجعل الشفرة تعمل كما بالأعلى حتى لا يتم إستبدال الjoin ب subquery const posts = await Post.findAll({ attributes:{ include:[[Sequelize.fn("COUNT", Sequelize.col("UserLikes.id")), "likes"]] }, include:{model:User,as:"UserLikes" , attributes:[]}, group: ['Post.id'], subQuery: false, limit: limit, offset: limit * pageNo }) الفرق الوحيد أننا قمنا بتغيير خاصية attributes بدلًا من وضعها على هيئة مصفوفة قمنا بوضعها على هيئة كائن, حيث إن وضعناها على هيئة مصفوفة سيقوم بجلب العناصر التي في المصفوفة فقط, بينما إن قمنا بوضعها على هيئة كائن سيقوم بجلب العناصر جميعها بالإضافة إلى الحقل في الخاصية include اقتباس
السؤال
Ahmed Yehia2
ازاي اجيب عدد الassosiactions في علاقة many to many في sequelize
توضيح العنوان وتنسيق الشفرة البرمجية
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.