回答

收藏

根据帖子ID检索标签

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

我有三个表:posts,post_tags和tags。一个帖子可以有多个标签,而一个标签可以属于多个帖子。由于这种多对多关系,我做了一张post_tags桌子。它有两个字段:p_id和t_id。它们都是帖子表和标签表的外键。现在,当我运行PHP方法以获取最新帖子时,我还想在一个查询中检索属于该帖子的标签。仅供参考,这是这三个表:5 F+ k1 B- y3 y, j; {3 @3 r
帖子
. w  O. V; |" q) j( E7 I| p_id | c_id | u_id |   title   |     body    |      published      |
* m, T8 _$ q+ ?2 @5 \----------------------------------------------------------------------
) u6 J3 H0 S) I. G% r|  1   |  1   |   1  | first post| lorem ipsum | 2012-01-27 18:37:47 |8 U7 S3 X; d- \% m3 p6 m4 J
post_tags' T1 x; q# |0 i! r- H  x: U- f  S
| p_id | t_id |0 z  F5 j6 [" n0 ?/ O
---------------
, Y1 z5 K2 m6 i, M# Y|  1   |  3   |
* }3 s" w+ \. d# _* P( `0 S! t; x标签; p9 Q9 C9 E, i% o. s
| t_id |     name    |     slug    |) O: b4 l! `- f3 v
------------------------------------
1 W  e: I$ W/ x/ ~. J# `|  3   | programming | programming |7 y$ Q4 s) A6 ?5 v! h& O& i, n' N
这是我现在用来获取不带标签的最新帖子的PHP代码:
# F2 ^( f! ?# gpublic function getLatestPosts()' E2 |3 L+ V# \% \' F: G
{
5 `! n8 `7 h0 S    $query = $this->db->query('SELECT title, clean_title, body, published FROM posts ORDER BY published DESC');% o. _. y, o2 F3 f# [/ J
    $blogPosts = array();
+ r9 y4 |$ m, R, w4 k    foreach ($query->result() as $row)+ \! W' z& ]5 Y' L, }$ z3 e
    {
/ h% v9 q7 S7 a: e, X" O        $blogPosts[] = array('title' => $row->title,
) B( n( u* T. p0 H4 S  Y                             'clean_title' => $row->clean_title,& v) E5 t( B! A! ^6 ?
                             'body' => $row->body,# N9 L0 `9 Y. v9 r
                             'published' => $row->published);
3 |6 u8 a" c/ x8 j% k- E    }
6 i; x! b* c, c5 T4 a    return $blogPosts;
( f* B4 t0 Y( Z" o: `' v}
- H$ V/ i5 Z) g/ f% ?& D7 t# [如何调整查询以获取属于每个帖子的标签的名称和标签?; |1 w# N# H. c
谢谢你的帮助!
7 X, g7 ~- `" R0 P) d1 l* \; n                * ]/ a7 f2 u8 a; \( U6 d: {5 B
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则