回答

收藏

根据帖子ID检索标签

技术问答 技术问答 334 人阅读 | 0 人回复 | 2023-09-11

我有三个表:posts,post_tags和tags。一个帖子可以有多个标签,而一个标签可以属于多个帖子。由于这种多对多关系,我做了一张post_tags桌子。它有两个字段:p_id和t_id。它们都是帖子表和标签表的外键。现在,当我运行PHP方法以获取最新帖子时,我还想在一个查询中检索属于该帖子的标签。仅供参考,这是这三个表:
: _" G& e, u9 j( q: R$ G& G帖子
- q5 M+ z; V/ D7 ^| p_id | c_id | u_id |   title   |     body    |      published      |
1 l' s2 f* C0 K$ H----------------------------------------------------------------------
+ a5 e2 A3 [: F; V. B5 A) |6 o|  1   |  1   |   1  | first post| lorem ipsum | 2012-01-27 18:37:47 |+ ?. [3 H* F& A+ }- Y$ @
post_tags
8 p" N2 b$ M5 U" l6 w; l| p_id | t_id |6 C  }& X3 V" B* r4 `3 p
---------------
. W5 t# w" T. Z/ W3 x) E|  1   |  3   |
- ?9 t7 B+ c1 E% V, q( m标签
$ B+ n( X/ H& M& @( G4 L| t_id |     name    |     slug    |3 B6 ^. J. O' z. _! R) t- }; e  ~
------------------------------------% F" G/ ^* h( R. F0 m- d. n- U
|  3   | programming | programming |2 ^4 k6 ?6 B( i5 q2 [4 c' e
这是我现在用来获取不带标签的最新帖子的PHP代码:+ O  N% \& k. ~( J" D: f
public function getLatestPosts()8 R& @. ^6 g( A  P
{
! J' a7 _% a& A" [    $query = $this->db->query('SELECT title, clean_title, body, published FROM posts ORDER BY published DESC');
9 p- X( K9 I& z: h4 J) t3 J    $blogPosts = array();, e+ I0 S7 `0 e9 O! W/ _
    foreach ($query->result() as $row)4 R% g* P7 H/ [% H6 P
    {
8 |2 B: W( R- q$ g; `. H1 Q        $blogPosts[] = array('title' => $row->title,7 L. D* w& U4 q7 u$ @
                             'clean_title' => $row->clean_title,& \0 u6 @5 k- C0 e  a
                             'body' => $row->body,  k- J! n# ?. {" a
                             'published' => $row->published);6 L! |" t% S# j* ]
    }
  a) C) k2 X& g! ?1 `; Y1 b    return $blogPosts;
* ?. D6 W2 J) H1 s0 e}  t5 T" E: e. S1 A3 ?+ A
如何调整查询以获取属于每个帖子的标签的名称和标签?
! u: C# L# Q  Q* l7 G5 }5 x谢谢你的帮助!
9 t& D$ R5 [. Z; M2 a. p. X+ s                - b( p" M) x' w+ z
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则