标签系统使用" Toxi"解决方案CodeIgniter

时间:2018-01-29 05:39:26

标签: php sql codeigniter tags tagging

首先,我有三个表:视频,标签和标签视频。我已经使用左连接加入了三个表。

我目前的目标是根据当前视频标签显示相关视频列表。到目前为止,我能够输出当前的视频标签并尝试存储在数组中,它将用于“toxi”中。解算法。  虽然我遵循了'toxi'解决方案程序,我仍然遇到错误:类stdClass的对象无法转换为字符串,它指向模型($ this-> db-> where_in(' tag.tag_id& #39;,$ result);)和数据库:不唯一的表/别名:'视频' 。 我想将结果标记与tagvideo表中的video_id相关联,Tagvideo table diagram

我已经检查了$ result的内部,我假设它已经是数组形式。 使用此:echo '<pre>'.var_export($result, true).'</pre>'; exit;。 我按照以下链接中的步骤操作:http://developer-paradize.blogspot.com/2013/12/how-to-display-search-results-with.html

控制器:

public function view($videoId) 
{
    if ($videoId == null) 
    {
        redirect ('video/index');
    }
    else {
        $videoDetails = $this->video_model->getVideoDetails($videoId);
        $relatedVideo = $this->video_model->getRelated($videoId);

        $data = array (
            'videoDetails' => $videoDetails,
            'relatedVideo' => $relatedVideo
            );

        $this->load->view('video/userdisplay' , $data);
    }
}

型号:

   public function getRelated($videoId)
   {
    //output the current video tags
    $this->db->select('tag.tag_id');
    $this->db->from('video','tagmap','tag');
    $this->db->join('tagmap', 'tagmap.video_id=video.video_id','left');
    $this->db->join('tag', 'tag.tag_id=tagmap.tag_id','left');
    $this->db->where('tagmap.video_id', $videoId); 

    $query = $this->db->get();
    if( $query->num_rows() > 0 )
    { 
      $result = $query->result(); 

        //show related videos based on the tags
        $this->db->select('video.*');
        $this->db->from('video','tagmap','tag');
        $this->db->join('tagmap', 'tagmap.video_id=video.video_id','left');
        $this->db->join('tag', 'tag.tag_id=tagmap.tag_id','left');

        $tag_count = count($result);

        $this->db->where_in('tag.tag_id', $result);
        $this->db->group_by('video.video_id');

        $count = "COUNT(video.video_id) =".$tag_count;
        $this->db->having($count);
        $query2 = $this->db->get('video');
        return ($query2->num_rows() > 0)  ? $query2->result() : FALSE; 
    }
    else
    { 
      return FALSE; 
    } 


}

查看:

<b>Related videos:<b>
                <?php if (!empty($relatedVideo)): ?>
                <?php foreach($relatedVideo as $item):?>
                <?php echo $item->video_topic?>
                <?php endforeach;?> 
                <?php else: ?>
                    <?php echo "No related videos." ?>
                <?php endif; ?>enter code here

0 个答案:

没有答案