codeigniter活动记录左连接

use*_*324 25 php activerecord codeigniter left-join

我有3个mysql表.

Table 1 user  
id | name  

Table 2 emails  
id | email  

Table 3 user_email  
user_id | email_id  
Run Code Online (Sandbox Code Playgroud)

我没有查询多表的经验.
使用codeigniter活动记录,我想根据用户ID找出用户的电子邮件地址,请告知以下代码是否正确?

$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();  
Run Code Online (Sandbox Code Playgroud)

M K*_*aid 51

你有错误的where子句需要比较你的表中的user_id,你正在比较电子邮件的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(); 
Run Code Online (Sandbox Code Playgroud)

更有用的方法是为表提供别名,以便具有相同列的表不会有任何混淆

$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(); 
Run Code Online (Sandbox Code Playgroud)