gpt4 book ai didi

php - 根据帖子 ID 检索标签

转载 作者:行者123 更新时间:2023-11-29 00:49:46 24 4
gpt4 key购买 nike

我有三个表:postspost_tagstags。一个帖子可以有多个标签,一个标签可以属于多个帖子。由于这种多对多关系,我制作了一个 post_tags 表。它有两个字段:p_idt_id。它们分别是 posts 表和 tags 表的外键。现在,当我运行我的 PHP 方法来获取最新的帖子时,我还想在一个查询中检索属于该帖子的标签。仅供引用,以下是这三个表格:

帖子

| p_id | c_id | u_id |   title   |     body    |      published      |
----------------------------------------------------------------------
| 1 | 1 | 1 | first post| lorem ipsum | 2012-01-27 18:37:47 |

post_tags

| p_id | t_id |
---------------
| 1 | 3 |

标签

| t_id |     name    |     slug    |
------------------------------------
| 3 | programming | programming |

这是我现在用来获取不带标签的最新帖子的 PHP 代码:

public function getLatestPosts()
{
$query = $this->db->query('SELECT title, clean_title, body, published FROM posts ORDER BY published DESC');
$blogPosts = array();
foreach ($query->result() as $row)
{
$blogPosts[] = array('title' => $row->title,
'clean_title' => $row->clean_title,
'body' => $row->body,
'published' => $row->published);
}

return $blogPosts;
}

我如何调整查询以获取属于每个帖子的标签的名称和 slug?

感谢您的帮助!

最佳答案

隐式连接:

SELECT title, clean_title, body, published, name, slug
FROM posts, posts_tags, tags
WHERE posts.p_id=posts_tags.p_id AND posts_tags.t_id=tags.t_id
ORDER BY published DESC

显式连接:

SELECT title, clean_title, body, published, name, slug
FROM posts
LEFT JOIN posts_tags ON posts.p_id=posts_tags.p_id
LEFT JOIN tags ON posts_tags.t_id=tags.t_id
ORDER BY published DESC

一次看到正确的规范化数据库模式令人耳目一新。

关于php - 根据帖子 ID 检索标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047168/

24 4 0