我的数据库instructors
和courses
中有两个表。我想加入他们,因此写了这段代码
$this->db->join('instructors', 'instructors.id = courses.instructor_id', 'left');
$query = $this->db->get_where('courses', array('courses_slug' => $slug));
return $query->row_array();
此代码表示:
SELECT * FROM `courses` LEFT JOIN `instructors` ON `instructors`.`id` = `courses`.`instructor_id` WHERE `courses_slug` = 'abituriyent-hazirligi'
但是当我编写这段代码来检查时:
$data['courses'] = $this->popular_courses_model->get_popular_courses($slug);
echo $data['courses']['id'];
die();
它写了教师id,而不是课程的id。哪里可以问题?提前谢谢。
答案 0 :(得分:1)
您正在使用相同名称的列(' id')加入两个表格。您需要在选择列时具体,并在必要时重命名(' AS')。
select courses.id as course_id, instructor.id as instructor_id, ...
答案 1 :(得分:0)
使用联接时,您应该明确地调出要返回的列,如:
$select = "c.id, c.name, c.instructor_id, i.name instructor_name";
return $this->db->select($select)
//equivalent to "instructors as i"
->join('instructors i', 'i.id = c.instructor_id', 'left')
->where('c.courses_slug', $slug)
//equivalent to "courses as c"
->get('courses c')->row_array();