Присоединение к таблице: невозможно показать данные, что я хочу
Если у меня есть таблица, как это:
ID | Title | Topic | Summary
1 | A | Technology | ...
2 | B | Health | ...
3 | C | Sport | ...
Это моя CI_Model:
function show($limit, $offset)
{
$this->db->select('document.id, document.title, document.summary, document.id_topic AS topic');
$this->db->from('document');
$this->db->join('topic', 'topic.id_topic = document.id_topic');
$this->db->limit($limit, $offset);
$this->db->order_by('id', 'asc');
return $this->db->get()->result();
}
Это мой контроллер:
$docdata = $this->Trainingmodel->show($this->limit, $offset);
...
$this->table->set_heading('ID', 'Title', 'Topic', 'Summary');
foreach ($docdata as $doc)
{
$this->table->add_row($doc->id, $doc->title, $doc->topic, $doc->summary);
}
Очевидно, тема показывает, что это идентификатор, а не имя. Например:
ID | Title | Topic | Summary
1 | A | 1 | ...
2 | B | 2 | ...
3 | C | 3 | ...
Что я должен делать? Я хочу показать название темы, а не идентификатор темы.
3 ответа
Решение
Глядя на структуру таблицы, которую вы разместили в виде комментариев в других ответах, я думаю, что вам нужно topic.topic
в вашем select()
а также topic.id = document.id_topic
в вашем join()
-
$this->db->select('document.id, document.title, document.summary, topic.topic');
$this->db->from('document');
$this->db->join('topic', 'topic.id = document.id_topic');
$this->db->select('document.id, document.title, document.summary, topic.topic');
$this->db->from('document');
$this->db->join('topic', 'topic.id = document.id_topic');
Может быть из-за этого document.id_topic
$this->db->select('document.id, document.title, document.summary, document.id_topic AS topic');
это должно быть что-то вроде document.topic
или же document.name_topic
?