0

我正在构建一个 NOTE 系统。

我有多个表(注释、标签、...),并且我正在使用 $this -> db -> join(); 将标签加入到我的主要注释中。把所有东西都放在一个物体上。

当一个笔记有 2 个或更多标签时,我会得到两行或更多行只有不同的标签。其余的都是一样的。我需要将其合并为只有一个注释条目。

$this -> db -> where ('user', USER_ID);
$this -> db -> join ('tags', 'tags.note_id = note.id', 'inner');
$query = $this->db->get('notes');

可能还有其他与 TAGS 具有相同字符的表,例如地点。笔记可能不止一个地方。

我如何从现在开始?我想要一个带有参数的对象 NOTE,例如 note_id、note_text,并将 TAGS 加入其中,如果有多个标签,则 OBJECT PARAMETER = ARRAY 包含所有 NOTES。

  1. 如何做到这一点?
  2. 将它放在一个对象中真的是进一步发展的好主意吗?或者我应该去 foreach 并列出每一行的所有标签?
  3. 当有人根据标签进行过滤时,我应该在哪里以及如何存储一个过滤?到目前为止,我正在使用 $this -> session;

谢谢你,雅库布

4

1 回答 1

1

您可能想使用 MySQL 的GROUP_CONCAT()

$this->db->select('n.*, GROUP_CONCAT(t.name)', false)
         ->from('notes n')->join('tags t', 't.note_id = n.id', 'inner')
         ->where('n.user', USER_ID)->get();

我用过t.name,但不管它是什么字段名,你明白了。

于 2013-03-07T13:26:08.400 回答