创建 X 个解决方案的徽章?

嘿,我想知道是否有任何模板或标准查询用于奖励一定数量解决方案的徽章? 例如,我回复了大约 10 个帖子/问题,它们都被标记为解决方案。我为此获得一枚徽章,以及相应的 20、30、40 个解决方案标记的徽章,依此类推。

我尝试查找标准查询,但似乎没有找到。我确实看到这里有一些自定义查询。

谢谢,

插件自带了两个,你可以在 /admin/badges 页面启用它们(HelpDesk 和 TechSupport)。但如果你想修改它们,这里是查询语句:

SELECT p.user_id, p.id post_id, p.updated_at granted_at
FROM badge_posts p
WHERE p.post_number > 1 AND
    p.id IN (
      SELECT post_id FROM (
       SELECT pc.post_id, row_number()
       OVER (PARTITION BY p1.user_id ORDER BY pc.created_at) as rnum
       FROM post_custom_fields pc
       JOIN badge_posts p1 ON p1.id = pc.post_id
       JOIN topics t1 ON p1.topic_id = t1.id
       WHERE name = 'is_accepted_answer' AND
                    p1.user_id <> t1.user_id AND
        (
          :backfill OR
           p1.user_id IN (
                   select user_id from posts where p1.id IN (:post_ids)
           )
       )
) X  WHERE rnum = 1)

SELECT id user_id, current_timestamp granted_at
FROM users
WHERE id  IN (
       SELECT p1.user_id
       FROM post_custom_fields pc
       JOIN badge_posts p1 ON p1.id = pc.post_id
       JOIN topics t1 ON p1.topic_id = t1.id
       WHERE p1.user_id <> t1.user_id AND
                    name = 'is_accepted_answer' AND
            p1.user_id IN (
                   SELECT user_id
                   FROM posts
                   WHERE :backfill OR  p1.id IN (:post_ids)
            )
        GROUP BY p1.user_id
        HAVING COUNT(*) > 9
)
2 个赞

感谢 @JammyDodger

我可能还需要一些帮助。您是否有可以识别解决方案的某些选择器/字段的文档?

Screen Shot 2022-06-06 at 11.05.29 AM

没关系。 :slightly_smiling_face: 数据浏览器非常适合在将查询添加为自定义 SQL 徽章之前进行尝试(尽管数据浏览器中的查询不需要 backfill 部分)。

不过我认为上面第二个查询已经包含了您需要的所有信息。解决方案保存在 post_cutom_field 表中,name 列的值为 is_accepted_answer。第二个查询授予了获得 10 个解决方案的 TechSupport 徽章(HAVING COUNT(*) > 9),所以对于您想要的 OP 中的那些,您只需复制该查询并将底部的数字更改为 19、29、39 等即可。

1 个赞