2013-08-19 61 views
0

我想运行一个使用codeigniter框架的查询。我想避免使用WHERE子句,而是将条件作为查询的JOIN语句中ON子句的一部分。由于JOIN语句是在WHERE子句之前执行的,因此效率会更高。这里是我的代码:Codeigniter加入()不起作用

$this->db->select('SQL_CALC_FOUND_ROWS 
     projects.id, projects.project_name, projects.date_modified, 
     projects.last_modifier, projects.status, project_users.permission', false)-> 
      from('projects'); 
     $this->db->join('project_users', 'project_users.id = projects.id AND 
      project_users.user_id = ' . $this->user_id); 
    if ($orderby !== false) { 
     $this->db->order_by($orderby, $direction); 
    } 
    if ($limit !== null) { 
     $this->db->limit($limit, $offset); 
    } 
    $query = $this->db->get(); 

当我尝试加载页面时,我收到一个SQL错误。看来笨不包括条件后的AND:

SELECT SQL_CALC_FOUND_ROWS projects.id, projects.project_name, projects.date_modified, projects.last_modifier, projects.status, project_users.permission FROM (`projects`) JOIN `project_users` ON `project_users`.`id` = `projects`.`id` AND ORDER BY `project_name` ASC LIMIT 5, 0 

回答

0
join('project_users', 'project_users.id = projects.id AND project_users.user_id = ' . $this->user_id); 

应该

$this->db->join('project_users', 'project_users.id = projects.id AND 
     project_users.user_id = ' . $this->user_id); 
+0

感谢,但那是在后一个错误,但在我的代码是正确的,惋惜那。 – Paul