Активная запись codeigniter left join

У меня есть 3 таблицы mysql.

Table 1 user  
id | name  

Table 2 emails  
id | email  

Table 3 user_email  
user_id | email_id  

У меня нет опыта в нескольких таблицах запросов.
Используя активную запись codeigniter, я хочу узнать адрес электронной почты пользователя на основе идентификатора пользователя, PLS сообщите, соответствует ли приведенный ниже код?

$CI->db->select('email');
$CI->db->from('emails');
$CI->db->where('id', $userid);
$CI->db->join('user_email', 'user_email.user_id = emails.id', 'left');
$query = $CI->db->get();  

Ответы

Ответ 1

У вас неправильный параметр where, который вам нужно сравнить user_id из вашей таблицы, вы сравниваете идентификатор электронной почты с предоставленным $user_id

$CI->db->select('email');
$CI->db->from('emails');
$CI->db->where('user_id', $userid);
$CI->db->join('user_email', 'user_email.user_id = emails.id', 'left');
$query = $CI->db->get(); 

Более полезным способом является предоставление псевдонимов вашим таблицам, поэтому таблицы с одинаковыми столбцами не будут иметь путаницы

$CI->db->select('e.email');
$CI->db->from('emails e');
$CI->db->join('user_email ue', 'ue.user_id = e.id', 'left');
$CI->db->where('ue.user_id', $userid);
$query = $CI->db->get();