Помогите объединить таблицы MySQL (тегов) в Codeigniter? - PullRequest
0 голосов
/ 22 сентября 2011

Привет всем! Мне нужна помощь в поиске тегов, относящихся к конкретному сообщению. Я работаю с Codeigniter и MySQL.

Мои таблицы выглядят так.

сообщение * * 1005 идентификатор, заглавие, описание, user_id бирка

идентификатор, тег

post_tag

идентификатор, post_id, tag_id

Вот что у меня в контроллере:

$this->db->select('*');
$this->db->from('post');
$this->db->join('post_tag', 'post.id = post_tag.post_id');
$this->db->join('tag','post_tag.tag_id = tag.id');
$this->db->group_by('post.id');

Когда я открываю страницу в браузере, возвращается только 1 тег.

Заранее спасибо, я пытался найти это, прежде чем я спросил, но я не знал, что искать. : - /

ОБНОВЛЕНИЕ: я прокомментировал $ this-> db-> group_by ('post.id'); и теперь мой пост дублируется в зависимости от количества тегов. В моем сообщении было 3 тега, поэтому я получил 3 копии своего сообщения, но у каждого был свой тег в поле тега. : - /

Еще раз спасибо.

1 Ответ

2 голосов
/ 22 сентября 2011

Проблема в том, что вы группируете по идентификатору записи (это правильно), поэтому вы получите только один результат с одним тегом.

Вы можете использовать GROUP_CONCAT , чтобы объединить результаты в один столбец в каждой строке.

Что-то вроде

$this->db->select('post.*, GROUP_CONCAT(post_tag) as all_tags');

Это не проверено и будетобрабатывать только теги записей, а не сами теги, но вы должны иметь возможность что-то делать.Сначала я написал бы базовый SQL, а затем разбил его на функции CI.Кроме того, для начала я бы удалил второе соединение, чтобы упростить его.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...