Проблема PHP CodeIgniter с оператором JOIN - PullRequest
0 голосов
/ 29 июля 2011

У меня есть две таблицы: events_archive и report. Таблица событий показывает всю информацию о событии, включая ref_id (который является уникальным идентификатором для этого события), demo_id (идентификатор пользователя демо, принявшего участие в событии) и client_id (пользователь Идентификатор клиента, который участвовал в мероприятии). В таблице отчетов есть столбец event_ref, который соответствует событию ref_id.

Я пытаюсь заставить CodeIgniter показывать все отчеты для определенного пользователя на странице. Я хочу, чтобы отчеты отображали только те события, в которых участвовал пользователь (то есть события, которые имеют значение demo_id или client_id, равное значению в идентификаторе сеанса пользователя).

Вот код, который я использую в модели:

  function get_reports($user_id,$type,$limit,$offset){
    $this->db->select('*');
    $this->db->from('reports');
    $this->db->join('events_archive','events_archive.ref_id = reports.event_ref AND events_archive.'.$type.'_id = '.$user_id);
    $this->db->limit($limit,$offset);
    $reports = $this->db->get();
    if($reports->num_rows()>0){
      foreach($reports->result() as $report){
        $this->table->add_row( $report->id );
      }
    }
    $this->table->set_heading('ID');
    return $this->table->generate(); 
  }

Но он просто перечисляет 2 снова и снова (я думаю, 2 - это идентификатор отчета, который он нашел). Должен указывать идентификатор отчета в пошаговом режиме. Как ни странно, он перечисляется 16 раз (и есть 16 отчетов, которые соответствуют критериям для отображения). Что-то не так с JOIN или петлей. Я думаю, что это СОЕДИНЕНИЕ. Кто-нибудь знает, где я иду не так?

1 Ответ

0 голосов
/ 29 июля 2011

Я решил это, изменив $this->db->select('*') на $this->db->select('reports.*')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...