PHP: объединение записей в Active records

У меня есть приложение, которое использует библиотеку тегов тегов codeigniter CXTags.

Структура базы данных выглядит следующим образом:

сообщений

Я бы

tags_ref

row_id

Таблица

tag_id

теги

Я бы

safe_tag

тег

Мой запрос в основном идет, если $ safe_tag не равен null, а затем присоединяется к тегам_ref в post.id = tags_ref.row_id, присоединяйте теги к тегам_ref.tag_id = tags.id, где tags_ref.table = 'posts' и tags.safe_tag = 'food'

SELECT * FROM posts JOIN tags_ref ON posts.id = tags_ref.row_id JOIN tags ON tags_ref.tag_id = tags.id WHERE tags.safe_tag = $safe_id 

К сожалению, запрос, который я написал в активной записи, работает неправильно. Запрос работает отлично, когда £ safe_tag имеет значение null, но когда это не я получаю неправильные результаты.

 function get_posts($id = NULL, $safe_tag = NULL) { if($safe_tag != NULL){ echo $safe_tag;//debugging $table = 'posts'; $this->db->join('tags_ref', 'posts.id = tags_ref.row_id'); $this->db->join('tags', 'tags_ref.tag_id = tags.id'); $this->db->where('tags_ref.table', $table); $this->db->where('tags.safe_tag',$safe_tag); } //if an id was supplied if ( $id != NULL ) { $this->db->where('posts.city_id',$id); } // execute query $query = $this->db->get('posts'); ... 

Вот запрос с профилированием:

 SELECT * FROM (`posts`) INNER JOIN `tags_ref` ON `posts`.`id` = `tags_ref`.`row_id` INNER JOIN `tags` ON `tags_ref`.`tag_id` = `tags`.`id` WHERE `tags_ref`.`table` = 'posts' AND `tags`.`safe_tag` = 'food' AND `posts`.`city_id` = '2' 

Может кто-то посмотреть? Кажется, мне нужен свежий взгляд.