我写了一些代码,检查是否有课程显示tr
标签,如果没有,请不要显示。但是,如果尽管结果为空,则语句不起作用。
这里显示正确,因为该讲师有课程
然而,另一位教师没有任何课程,因此在这里它不应该显示<tr>
标签,但它显示空的tr
问题出在哪里?
这是我的模特:
public function get_instructors_lessons($slug = FALSE) {
if ($slug === FALSE) {
$this->db->join('courses', 'instructors.id = courses.instructor_id');
$query = $this->db->get('instructors');
return $query->row_array();
}
$this->db->join('courses', 'instructors.id = courses.instructor_id', 'left');
$query = $this->db->get_where('instructors', array('instructors_slug' => $slug));
return $query->result_array();
}
以下是我的观点:
<?php if(count($lessons)>0): ?>
<?php foreach($lessons as $lesson): ?>
<tr>
<td>
<a class="lessonsofinstructors" href="<?= site_url('/courses/'.$lesson['courses_slug']);?>">
<?= $lesson['title'] ?>
</a>
</td>
<td>
<?= $lesson['duration'] ?> Months</td>
<td>
<?= $lesson['begining'] ?>
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
答案 0 :(得分:0)
无论是否有课程,左连接都会获取教练的数据。所以你需要另一种连接类型,我认为默认适合:
public function get_instructors_lessons($slug = FALSE) {
if ($slug === FALSE) {
$this->db->join('courses', 'instructors.id = courses.instructor_id');
$query = $this->db->get('instructors');
return $query->row_array();
}
// no join type here
$this->db->join('courses', 'instructors.id = courses.instructor_id');
$query = $this->db->get_where('instructors', array('instructors_slug' => $slug));
return $query->result_array();
}