2013-08-16 2 views
0

Я получил две таблицы кино и , директор, в таблице фильма я получил два поля: « директора, 1» и 'director2.Codeigniter как эхо множественного INNER JOIN из одной таблицы

С внутренним соединением я сопоставляю две таблицы, но когда я делаю предлог поля «имя» и «фамилия» «директора», у меня есть только один результат, последний.

Это моя модель:

function getLastMoviesId($id) 
    { 
     $this->db->select('*'); 
     $this->db->from('movie as m'); 
     $this->db->join('director as d1', 'd1.id = m.director1'); 
     $this->db->join('director as d2', 'd2.id = m.director2'); 
     $this->db->where('m.id', $id); 
     $query = $this->db->get(); 
     if($query->num_rows() > 0){ 
      return $query->result(); 
     } else { 
      return 0; 
     } 
    } 

Это мое мнение:

<?php foreach ($archivepage as $m): ?> 
    <?= html_entity_decode($m->name) ?> 
    <?= html_entity_decode($m->surname) ?> 
<?php endforeach ?> 
+0

'ВНУТРЕННИЙ JOIN' матчи между столбцами в обе таблицы. Если оба 'd1' и' d2' не совпадают, верните пустые. Вы можете использовать 'LEFT JOIN' – Bora

+0

Эй, спасибо за ваш повтор, я изменил' $ this-> db-> join ('registi as r1', 'r1.id = f.regista1', 'left'); 'но результат не изменился, у меня есть только один результат, я думаю, что проблема в foreach. – simo

+1

Итак, 'var_dump ($ query-> result());' в модели. То, что вы получаете? И вы можете попробовать 'LEFT JOIN' для' $ this-> db-> join' – Bora

ответ

4

Ваши поля значения быть переписаны, поскольку он содержит те же имена, использовать что-то вроде этого вместо.

$this->db->select('m.*, d1.name d1name, d1.surname d1surname, d2.name d2name, d2.surname d2surname') 
$this->db->from('movie as m'); 
$this->db->join('director as d1', 'd1.id = m.director1', 'left'); 
$this->db->join('director as d2', 'd2.id = m.director2', 'left'); 
$this->db->where('m.id', $id); 

на ваш взгляд, теперь вы можете получить доступ к значениям, как этот

для первого одного

->d1name ->d1surname 

для второй

->d2name ->d2surname 
+0

Он работает! ты сделал мой день. – simo