6

PyroCms を使用して Codeigniter でメール システムを作成しようとしています。私のメール テーブルには、「受信者」行と、送信者と受信者のユーザー ID を含む「送信者」行があります。ID からユーザー名を取得するために、テーブルを結合しようとしていますが、単純に次のエラーが返されます。

エラー番号: 1066

一意のテーブル/エイリアスではありません: '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

ファイル名: /hsphere/local/home/brightmedia/reuseable.dk/modules/mail/models/mail_m.php

ライン番号: 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();

面白いことに、最後の「参加」操作を削除して、メールの受信者のみに参加するようにすると、すべてうまくいきます。

4

6 に答える 6

10

これはとても簡単です

$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();
于 2012-04-10T13:19:40.967 に答える
3

結合関数でエイリアスを強制しようとしましたか (「AS」演算子は select 句では機能しません...)?

<?php
$this->db->select('mailsystem.*, modtager.username AS modtager_name, afsender.username as afsender_name')
    ->join('`users` `modtager`', 'mailsystem.recipent = modtager.id', 'left')
    ->join('`users` `afsender`', 'mailsystem.sender = afsender.id', 'left');

$this->db->order_by('mailsystem.id', 'DESC');

return $this->db->get('mailsystem')->result();
于 2012-02-06T13:55:59.100 に答える
0

これを使用できます:

$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();

*任意の db プレフィックスを使用している場合は、これを使用します *

$this->db->select('mailsystem.*, users.username AS modtager, users.username as afsender')
$this->db->join('users', 'mailsystem.recipent = modtager.id AND '.$this->db->dbprefix('mailsystem').'.sender = '.$this->db->dbprefix('afsender').'.id', 'left')
$this->db->order_by('id', 'DESC');
return $this->db->get('mailsystem')->result();
于 2012-11-28T08:03:56.027 に答える