ソリューション
私は、codeigniterコールがjoin関数の内部でASを行う可能性を忘れてしまった、またはこれまでに知っていたことをatleastが訂正したと考えました。そのため私は元の呼び出しの代わりにこれを行いました
$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();
質問
PyroCmsでCodeigniterでメールシステムを作ろうとしています。
私のメールテーブルには、 "受取人"の行と、送信者と受取人のユーザIDを含む "送付者"の行があります。テーブルtoghetterに参加しようとしているidsからユーザー名を取得するには、このエラーを返します。
エラー番号: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
私のコードは次のとおりです:
$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();
面白いのは、最後の「結合」操作を削除してメールの受信者に参加するだけのままにしておくと、うまくいきます。
どんな提案も感謝します。
誠実な
ジョナス