I’m not well-versed in these queries but I have been using this (and others with different post requirements) query I got from the Discourse meta site to reward posting to a particular category.
SELECT P.user_id, MIN(P.created_at) granted_at, MAX(P.id) post_id
FROM badge_posts P JOIN topics T ON T.id = P.topic_id
WHERE T.category_id IN (SELECT id FROM categories WHERE id = 56 OR parent_category_id = 6)
AND P.user_id >= 0 GROUP BY P.user_id HAVING COUNT(*) >= 1
I was wondering how exactly I could change this to:
A) Require new TOPICS, not just posts in the category and
B) How I could include subcategories. So not just category 6, but also subcategories 7,8, and 9.
I finally realized why this code wasn’t working. I can’t award badges to categories that are limited to certain trust levels. I have a category that is only accessible/visible to trust level 2+
Badges won’t work for that group. Is that a bug or feature? Is there any way around it?
@sam, is there any way around this? The category is a corner of my forum designed to be earned by “leveling” up your trust level and contributing. I don’t mind if people who can’t access can see the badges earned from it. It’s meant to be something to work toward.
그렇게 할 수 있습니다. 문제는 쿼리가 badge_posts 테이블을 사용하고 있다는 점입니다. badge_posts 테이블에는 보호된 카테고리의 게시물이 포함되어 있지 않습니다. 쿼리를 badge_posts 테이블 대신 posts 테이블을 사용하도록 변경하면 작동할 것입니다.