Мне кажется, что ваш код выполняет какую-то замену, которую вы, вероятно, не хотите.По крайней мере, со строками:
$courses['id'] = $row->id;
$courses['course_name'] = $row->course_name;
Если вы заинтересованы в использовании (представлении) данных, разделенных сущностью (таблицей), то единственное изменение, которое я советую вам сделать, это изменить эти две строки (выше) наследующее:
$courses[] = array('id'=>$row->id, 'course_name'=>$row->course_name);
НО, я заметил, что вы включаете родительский идентификатор в каждую из дочерних сущностей, что приводит меня к выводу, что вы хотите использовать / представить данные таким образом, чтобы отразить реляционныеиерархия.Если это так, я рекомендую вам сделать что-то вроде:
$query = $this->db->query('SELECT * FROM courses');
$courses = $query->result_array();
// Put Courses into array
foreach ($courses as &$c)
{
// Put Topics into array
$query = $this->db->query('SELECT id, topic_name, `order` FROM course_topics WHERE course_id = '.$c['id']);
$topics = $query->result_array();
$c['topics'] = $topics;
foreach ($topics as $ti=>$t)
{
$query = $this->db->query('SELECT id, badge_name FROM course_topic_badges WHERE topic_id = '.$t['id']);
$badges = $query->result_array();
$c['topics'][$ti]['badges'] = $badges;
foreach ($badges as $bi=>$b)
{
$query = $this->db->query('SELECT id, dotpoint, viddler_video_id, viddler_openurl, `order` FROM course_topic_dotpoints WHERE badge_id = '.$b['id']);
$dotpoints = $query->result_array();
$c['topics'][$ti]['badges'][$bi]['dotpoints'] = $dotpoints;
}
}
}
Это создает довольно большой связанный массив, но это хорошая структура данных, если вам действительно нужны все эти данные и реляционная иерархия.важно для вас.Конечно, лучше всего сводить то, что вы строите, только к тому, что вы будете использовать.
РЕДАКТИРОВАТЬ:
Вот как вы можете перебирать / извлекать информацию из массива.Этот код будет в файле просмотра.
<h2>Courses:</h2>
<?php
foreach($courses as $c)
{
echo '<h3>'.$c['course_name'].' ('.$c['id'].")</h3>\n";
echo '<ul>';
foreach($c['topics'] as $t)
{
echo '<li>'.$t['topic_name'].' ('.$t['id'].")</li>\n";
echo '<ul>';
foreach($t['badges'] as $b)
{
echo '<li>'.$b['badge_name'].' ('.$b['id'].")</li>\n";
echo '<ul>';
foreach($b['dotpoints'] as $dp)
{
echo '<li>'.$dp['dotpoint'].' viddler: '.$dp['viddler_video_id'].' viddler_url: '.$dp['viddler_openurl']."</li><br/>";
}
echo '</ul>';
}
echo '</ul>';
}
echo '</ul>';
}
?>