首先,我有三个表:视频,标签和标签视频。我已经使用左连接加入了三个表。
我目前的目标是根据当前视频标签显示相关视频列表。到目前为止,我能够输出当前的视频标签并尝试存储在数组中,它将用于“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