回答

收藏

根据帖子ID检索标签

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

我有三个表:posts,post_tags和tags。一个帖子可以有多个标签,而一个标签可以属于多个帖子。由于这种多对多关系,我做了一张post_tags桌子。它有两个字段:p_id和t_id。它们都是帖子表和标签表的外键。现在,当我运行PHP方法以获取最新帖子时,我还想在一个查询中检索属于该帖子的标签。仅供参考,这是这三个表:
9 Q0 }% o0 A3 H# h帖子& ]% W9 S  c( P1 P- H/ P4 }
| p_id | c_id | u_id |   title   |     body    |      published      |( c) K' L) {. v2 d6 H! z
----------------------------------------------------------------------
/ r2 t0 h1 J" w|  1   |  1   |   1  | first post| lorem ipsum | 2012-01-27 18:37:47 |) w; ]! Y( Q- y; {6 V( D
post_tags
! j0 Q5 O" @% || p_id | t_id |6 I5 n, Q6 M8 k  o* m8 ^8 c
---------------
2 [* _! E. a& N|  1   |  3   |& O, P! G5 F4 _1 p
标签1 v% d2 p# a6 X( M. l) h
| t_id |     name    |     slug    |2 K5 ~- O8 X, m/ M6 f7 R2 N3 W
------------------------------------/ q( T  F. m# r+ x  ~1 i
|  3   | programming | programming |! w7 T3 ?" k2 S  B* Q
这是我现在用来获取不带标签的最新帖子的PHP代码:* n% o5 ^/ g- E# r* q
public function getLatestPosts()
. |' C+ E( a1 f: I{, E1 ~2 e* z( f9 y& I2 l
    $query = $this->db->query('SELECT title, clean_title, body, published FROM posts ORDER BY published DESC');. a3 |$ K- C- O
    $blogPosts = array();
! ^) d8 l3 f: m4 B8 e, L- E$ V    foreach ($query->result() as $row)8 R8 z; ~( P% U1 k1 C
    {, B6 l# s9 A- U& X  F4 o* X0 _
        $blogPosts[] = array('title' => $row->title,+ k4 D7 V' ]$ t( U  M/ f: @, u! f# D
                             'clean_title' => $row->clean_title,
- s9 c4 q$ c# v% M. T$ a( U( s                             'body' => $row->body,5 o3 `" K' z% t
                             'published' => $row->published);
) _3 ^# n* U  P3 y8 D$ X! |& O    }
( o. h/ m1 `/ h" h5 W: k8 B6 I) @    return $blogPosts;
! f1 j! x/ G3 o# o, @/ H}0 s% n$ s; A0 A: W( r- }/ e. a
如何调整查询以获取属于每个帖子的标签的名称和标签?
0 K1 O& x* A1 q谢谢你的帮助!. O7 s0 ?# m1 b) G4 K
               
6 e' h6 t% h" v$ T1 B* h5 O解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则