回答

收藏

根据帖子ID检索标签

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

我有三个表:posts,post_tags和tags。一个帖子可以有多个标签,而一个标签可以属于多个帖子。由于这种多对多关系,我做了一张post_tags桌子。它有两个字段:p_id和t_id。它们都是帖子表和标签表的外键。现在,当我运行PHP方法以获取最新帖子时,我还想在一个查询中检索属于该帖子的标签。仅供参考,这是这三个表:/ ?( W( O# `+ C* L, A, z
帖子* H+ L& C" V, c" Y+ }7 h
| p_id | c_id | u_id |   title   |     body    |      published      |6 n( e- S0 {- v! t8 i/ e
----------------------------------------------------------------------  M' p3 F! H4 V
|  1   |  1   |   1  | first post| lorem ipsum | 2012-01-27 18:37:47 |
9 M0 \. q/ m; Npost_tags
& B3 p# _: O# Q" v+ j& f, C| p_id | t_id |
! w  i+ i3 \$ `* _& p* v---------------8 A, y8 u' t" Z
|  1   |  3   |
4 K- Z' _! A; f0 d标签5 i. l5 j8 |( \) a3 ~* j9 f
| t_id |     name    |     slug    |) y) J# A1 J# B/ \. u: O
------------------------------------
6 |- Z$ C4 y4 O/ A" h; H" R. I/ C. m|  3   | programming | programming |* f" C1 O8 v7 o5 H
这是我现在用来获取不带标签的最新帖子的PHP代码:0 M1 L, N5 T! `, ~6 @
public function getLatestPosts()
  V! R, g' L  |6 l{
% V- m# n/ d4 h  p' ]7 `) ^" o    $query = $this->db->query('SELECT title, clean_title, body, published FROM posts ORDER BY published DESC');+ z2 V" h8 e0 i+ M1 q4 n: ~* m. A
    $blogPosts = array();
. a% E0 G+ A4 H# A    foreach ($query->result() as $row)
' Y% ]3 U7 C  Q9 l% r; x8 x. S+ Q    {4 ?, [; s' s  p3 _3 b4 L
        $blogPosts[] = array('title' => $row->title,
& O- j% I& v# ~/ o; k4 \1 y                             'clean_title' => $row->clean_title,
$ ?: f# R8 u! W% x1 I: a  ?4 a                             'body' => $row->body,
& |8 r  M6 w3 \- o  p2 Q7 G/ z                             'published' => $row->published);- Z& f& x- V2 \; _5 j5 G0 P6 S8 D
    }
# @& c2 t$ \+ B. b1 {6 ]    return $blogPosts;
; L# ]8 F5 ?( l}
* K2 M6 @6 |' [) M4 O1 e如何调整查询以获取属于每个帖子的标签的名称和标签?3 [4 \6 ?! w, o! J
谢谢你的帮助!
6 E3 B9 J$ d5 a+ q4 Q& f                % h3 ~- K5 a! X; h
解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则