Drupal:MySQL SELECT 所有属于特定论坛的帖子
Drupal: MySQL SELECT all posts belonging to a specific forum
我需要 select 在 Drupal 的一系列特定类别(论坛)中发布的所有消息(第一个帖子和回复)。
第一个帖子存储在 field_data_body
,回复存储在 field_data_comment_body
。
field_data_body
和field_data_comment_body
的结构是一样的,在body_value
列中有帖子的内容,在entity_id
列中有他们的唯一ID。
table field_data_taxonomy_forums
包含 entity_id
列和 taxonomy_forums_tid
列(它们是论坛类别的 ID)。 table taxonomy_term_data
包含列 tid
(与 taxonomy_forums_tid
和 description
列(即论坛类别的标题)相同)。
所以,我正在寻找一个查询,它允许我 select 帖子的 body 和指定数组 body 的论坛描述 tid
s(即论坛类别的 ID),我将在 taxonomy_term_data
table.
中手动找到
因此,例如,我正在寻找允许我 SELECT 帖子 "belonging" 到 tid
s 1456,7622,862
和相关 [=22] 的查询=] 描述。
这是 field_data_body
table 的屏幕截图:
要查找对论坛 ID 的引用,您必须添加对 "forum" table 的使用(table 建立节点与论坛条款的关系。)
还应该注意的是,论坛 id 不存在,它是一个分类 id。
这是一个通过分类 id(tid)
仅获取第一条消息主题的示例
SELECT * FROM field_data_body fdb
LEFT JOIN forum f ON f.nid = fdb.entity_id
WHERE fdb.bundle="forum" AND f.tid=15
请注意,论坛模块与评论核心模块一起使用,这意味着只有第一条主题消息存储在 "field_data_body" 中,所有回复都存储在 "field_data_comment_body" table.
希望对您有所帮助
我认为,我们最好将任务分成 2 个子任务:
- 查找属于特定 tid 的帖子正文。
- 查找正文中属于特定 tid 的所有评论。
我们需要使用这些 tables:
- field_data_taxonomy_forums
- field_data_body
- 评论
- field_data_comment_body
数据库结构:
找到尸体
SELECT
taxonomy_forums.taxonomy_forums_tid AS tid,
body.entity_id,
body.body_value AS body
FROM
field_data_taxonomy_forums AS taxonomy_forums
INNER JOIN
field_data_body AS body
ON
body.entity_id=taxonomy_forums.entity_id
WHERE
taxonomy_forums.taxonomy_forums_tid IN (9);
查找正文的评论
这里我们需要注释 table,它统一了 field_data_body
和 field_data_comment_body
。
SELECT
taxonomy_forums.taxonomy_forums_tid AS tid,
comment_body.entity_id,
comment_body.comment_body_value AS body
FROM
field_data_taxonomy_forums AS taxonomy_forums
INNER JOIN
field_data_body AS body
ON
body.entity_id=taxonomy_forums.entity_id
INNER JOIN
comment
ON
comment.nid=body.entity_id
INNER JOIN
field_data_comment_body AS comment_body
ON
comment_body.entity_id=comment.cid
WHERE
taxonomy_forums.taxonomy_forums_tid IN (9);
如果您对这 2 个查询进行 UNION,您将获得帖子和评论的列表。
我需要 select 在 Drupal 的一系列特定类别(论坛)中发布的所有消息(第一个帖子和回复)。
第一个帖子存储在 field_data_body
,回复存储在 field_data_comment_body
。
field_data_body
和field_data_comment_body
的结构是一样的,在body_value
列中有帖子的内容,在entity_id
列中有他们的唯一ID。
table field_data_taxonomy_forums
包含 entity_id
列和 taxonomy_forums_tid
列(它们是论坛类别的 ID)。 table taxonomy_term_data
包含列 tid
(与 taxonomy_forums_tid
和 description
列(即论坛类别的标题)相同)。
所以,我正在寻找一个查询,它允许我 select 帖子的 body 和指定数组 body 的论坛描述 tid
s(即论坛类别的 ID),我将在 taxonomy_term_data
table.
因此,例如,我正在寻找允许我 SELECT 帖子 "belonging" 到 tid
s 1456,7622,862
和相关 [=22] 的查询=] 描述。
这是 field_data_body
table 的屏幕截图:
要查找对论坛 ID 的引用,您必须添加对 "forum" table 的使用(table 建立节点与论坛条款的关系。) 还应该注意的是,论坛 id 不存在,它是一个分类 id。 这是一个通过分类 id(tid)
仅获取第一条消息主题的示例SELECT * FROM field_data_body fdb
LEFT JOIN forum f ON f.nid = fdb.entity_id
WHERE fdb.bundle="forum" AND f.tid=15
请注意,论坛模块与评论核心模块一起使用,这意味着只有第一条主题消息存储在 "field_data_body" 中,所有回复都存储在 "field_data_comment_body" table.
希望对您有所帮助
我认为,我们最好将任务分成 2 个子任务:
- 查找属于特定 tid 的帖子正文。
- 查找正文中属于特定 tid 的所有评论。
我们需要使用这些 tables:
- field_data_taxonomy_forums
- field_data_body
- 评论
- field_data_comment_body
数据库结构:
找到尸体
SELECT
taxonomy_forums.taxonomy_forums_tid AS tid,
body.entity_id,
body.body_value AS body
FROM
field_data_taxonomy_forums AS taxonomy_forums
INNER JOIN
field_data_body AS body
ON
body.entity_id=taxonomy_forums.entity_id
WHERE
taxonomy_forums.taxonomy_forums_tid IN (9);
查找正文的评论
这里我们需要注释 table,它统一了 field_data_body
和 field_data_comment_body
。
SELECT
taxonomy_forums.taxonomy_forums_tid AS tid,
comment_body.entity_id,
comment_body.comment_body_value AS body
FROM
field_data_taxonomy_forums AS taxonomy_forums
INNER JOIN
field_data_body AS body
ON
body.entity_id=taxonomy_forums.entity_id
INNER JOIN
comment
ON
comment.nid=body.entity_id
INNER JOIN
field_data_comment_body AS comment_body
ON
comment_body.entity_id=comment.cid
WHERE
taxonomy_forums.taxonomy_forums_tid IN (9);
如果您对这 2 个查询进行 UNION,您将获得帖子和评论的列表。