Система тегов, использующая «Toxi» Решение CodeIgniter

Во-первых, у меня есть три таблицы: видео, теги и тегвидео. Я уже присоединился к трем таблицам, используя левое соединение.

Моими текущими задачами является отображение списка связанных видео на основе текущих тегов видео. Пока я могу выводить текущие теги видео и пытаться сохранить их в массиве, где они будут использоваться в алгоритме решения «toxi».
Хотя я следовал процедуре решения «токси», я все же столкнулся с ошибками: Объект класса stdClass не может быть преобразован в строку, который он указывает на модель ($ this-> db-> where_in (‘tag.tag_id’, $ result);) и для базы данных: Не уникальная таблица / псевдоним: ‘video’.
Я хочу связать полученные теги с его video_id в таблице tagvideo, Табличная диаграмма Тагвидео

я уже проверил внутреннюю часть $ результата, я предположил, что это уже в виде массива.
Используя это: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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]