2014-01-30 3 views
0

Я новичок в кодеригенере.Codeigniter activerecords

Im пытается отправить этот запрос:

SELECT * FROM employees 
    INNER JOIN authorization ON authorization.Employee_ID=employees.Employee_ID 
    WHERE authorization.role='Team Leader' 
    AND authorization.Employee_ID NOT IN(SELECT Employee_ID FROM team_leaders) 

Этот запрос используется для выбора сотрудников, которые имеют позицию лидера команды (роли), а не назначенный команде.

У меня возникают проблемы, делая этот запрос в активных записей CodeIgniter в

Мой ошибочный код модели:

function teamleaders(){ 
    $this->db->select('Employee_ID'); 
    $this->db->from('team_leaders'); 
    $query=$this->db->get(); 
    $teamleaderid=$query->result_array(); 
     //get teamleaders id who are assigned in a tam 

    $this->db->select('employees.Employee_ID,employees.First_Name,employees.Last_Name'); 
    $this->db->from('employees'); 
    $this->db->join('authorization','authorization.Employee_ID=employees.Employee_ID'); 
    $this->db->where('authorization.role','Team Leader'); 
    $this->db->where_not_in('authorization.Employee_ID',$teamleadersid); 
    $query=$this->db->get(); 

    return $query->result_array(); 
     } 

Просьбы помочь мне сделать это с помощью активных записей.

я бы очень признателен за любую помощь

ответ

1

Да, вы можете сделать это попробовать,

$this->db->select('employees.*'); 
    $this->db->from('employees'); 
    $this->db->join('authorization','authorization.Employee_ID=employees.Employee_ID'); 
    $this->db->where('authorization.role','Team Leader'); 
    $this->db->where('authorization.Employee_ID NOT IN (SELECT Employee_ID FROM team_leaders)'); 
    $query=$this->db->get(); 
+0

Это! Большое спасибо! – tigz

0

Что об этом:

$sql="SELECT * FROM employees 
INNER JOIN authorization ON authorization.Employee_ID=employees.Employee_ID 
WHERE authorization.role='Team Leader' 
AND authorization.Employee_ID NOT IN(SELECT Employee_ID FROM team_leaders)"; 

return $this->db->query($sql)->result_array(); 
+0

Да это работает прекрасно. Но я хотел бы знать, может ли его посылка одного и того же запроса с использованием $ this-> db-> wher_not_in() – tigz

+0

where_not_in() expexs второй пармет как плоский массив, примерно такой: array ('item1', 'item2' ...); $ query-> result_array(); возвращает массивы, вложенные в массив, что-то вроде: array ( array(), array(), ... ); вам нужно пройти все эти вспомогательные массивы и нажать нужное поле в массив extrated_result – Kluverkamp

0

Ваш $teamleaderid массив не в формате, который вы думаете, что это in. Это массив массивов, а не массив идентификаторов.

Попробуйте это:

$teamleaderid = array_map(function($a){ 
    return $a['Employee_ID']; 
}, $teamleaderid); 
+1

Вау, это тоже работает. Похоже, мне нужно больше узнать о массивах – tigz

Смежные вопросы