使用or_like codeigniter时,join不会提供所需的结果

时间:2014-01-28 20:42:49

标签: php mysql codeigniter activerecord join

$skills = explode(',', 'good listener,topper,leader');
$teacherID = 7;

function search_follower($teacherID, $skills, $limit, $start) {
    $this->db->limit($limit, $start);
    $this->db->select('student_skills.user_id');
    $this->db->from('student_skills');
    $this->db->join('followers', 'followers.student_id = student_skills.user_id', 'FULL JOIN');

    foreach ($skills as $skill) {
        $this->db->like('student_skills.name', $skill);
        $this->db->or_like('student_skills.name', $skill);
    }
    $this->db->where('followers.teacher_id', $teacherID);
    $query = $this->db->get();
    if ($query->num_rows() > 0) {
        foreach ($query->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }
    return false;
}

student_skills表:

id name user_id

1 topper 5

2 leader 5

3 good listener 6

4 toper 6

关注者表:

id teacher_id student_id

1 7 5

1 7 6

1 7 8

我已经编写了上面的模型函数来获取跟随特定教师($teacherID)的学生的学生ID,并且从student_skills表中指定了技能($skills)..

当我运行具有多种技能的上述功能(例如:良好的倾听者,礼帽等)或单一技能(例如:topper)时,它运行时没有显示任何错误..但它给了我所有具有指定技能的学生我想只有跟随特定老师的学生......并且具备指定的技能..

但是当我对or_like语句发表评论时,它会向我提供所需的结果,但多项技能无法正常工作.. ex: topper正在工作且ex:topper,topper正在工作但ex: topper,leader无法正常工作

我在2天内努力解决这个问题......但还没有找到任何解决方案......

任何建议或帮助都会有很大的帮助..提前感谢。

1 个答案:

答案 0 :(得分:0)

尝试修改select句子。

$this->db->select('student_skills.*, followers.*');