Jon*_*s m 2 php mysql join codeigniter pyrocms
解
我认为codeigniter调用错过了在连接函数内部执行AS的可能性,或者至少我所知道的内容,任何更正都将受到赞赏.因此我做了这个而不是原来的电话
$sql = "
SELECT default_mailsystem.*,
recipent.first_name AS modtager,
sender.first_name AS afsender
FROM default_mailsystem
LEFT JOIN default_profiles AS recipent
ON recipent.id = default_mailsystem.id
LEFT JOIN default_profiles AS sender
ON sender.id = default_mailsystem.id
";
return $this->db->query($sql)->result();
Run Code Online (Sandbox Code Playgroud)
题
我试图在Codeigniter中使用PyroCms制作邮件系统.在我的邮件表中,我有一个"recipent"行和一个"sender"行,其中包含发件人和配方的用户ID.从我尝试加入表toghetter的ID中检索用户名,但它只是返回给我这个错误:
错误号码:1066
Not unique table/alias: 'default_users'
SELECT `default_mailsystem`.*, `default_users`.`username` AS modtager, `default_users`.`username` as afsender FROM (`default_mailsystem`) LEFT JOIN `default_users` ON `default_mailsystem`.`recipent` = `default_modtager`.`id` LEFT JOIN `default_users` ON `default_mailsystem`.`sender` = `default_afsender`.`id` ORDER BY `id` DESC
Filename: /hsphere/local/home/brightmedia/reuseable.dk/modules/mail/models/mail_m.php
Line Number: 13
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
$this->db->select('mailsystem.*, users.username AS modtager, users.username as afsender')
->join('users', 'mailsystem.recipent = modtager.id', 'left')
->join('users', 'mailsystem.sender = afsender.id', 'left');
$this->db->order_by('id', 'DESC');
return $this->db->get('mailsystem')->result();
Run Code Online (Sandbox Code Playgroud)
有趣的是,如果我删除最后一次"加入"操作并让它只加入邮件的配方,那么一切都很顺利.
任何建议将不胜感激.真诚的乔纳斯
这很简单
$this->db->select('mailsystem.*, users.username AS modtager, users.username as afsender')
$this->db->join('users', 'mailsystem.recipent = modtager.id AND mailsystem.sender = afsender.id', 'left')
$this->db->order_by('id', 'DESC');
return $this->db->get('mailsystem')->result();
Run Code Online (Sandbox Code Playgroud)
在这个线程的时候,我认为 codeigniter 调用错过了 AS在连接内部执行操作的可能性,因此解决了这个问题:
$sql = "
SELECT default_mailsystem.*,
recipent.first_name AS modtager,
sender.first_name AS afsender
FROM default_mailsystem
LEFT JOIN default_profiles AS recipent ON recipent.id = default_mailsystem.id
LEFT JOIN default_profiles AS sender ON sender.id = default_mailsystem.id
";
return $this->db->query($sql)->result();
Run Code Online (Sandbox Code Playgroud)