codeigniter различает имена полей в соединенных таблицах - PullRequest
2 голосов
/ 02 апреля 2010

Мне нужно получить данные из двух таблиц. первый список событий, второй список мест.

У меня есть поля с одинаковыми именами в обеих таблицах: events.venue (который является идентификатором) и venues.venue - название места, скажем, "blues bar" Таблицы могут быть объединены на events.venue = venues.id.

Фрагмент моей модели:

$this->db->select('events.*, venues.*');
        $this->db->join('venues', 'events.venue = venues.id');
        if ($date != 'all')
        {
            $this->db->where('date', $date);
        }

        if ($keyword)
        {
            $this->db->like('description', $keyword);
            $this->db->or_like('band', $keyword);
            $this->db->or_like('venue', $keyword);
            $this->db->or_like('genre', $keyword);
        }

        $Q = $this->db->get('events');
        if ($Q->num_rows() > 0)
        {
            foreach ($Q->result() as $row)
            {
                $data[] = $row;
            }
        }

        $Q->free_result();
        return $data;

Фрагмент просмотра:

foreach ($events as $row) {
            echo    "<p>{$row->band} ({$row->genre})<br />";
            echo    "Playing at: {$row->venue}<br /></p>"; // echoes "blues bar"
//more here...
}

2 вопроса: 1) Почему $ row-> venue выводит эхо venues.venue вместо events.venue?

Б) как я могу их дифференцировать? например. Что если я захочу повторить события и проспекты? Я, вероятно, могу сделать что-то вроде «SELECT venues.venue as name_of_the_venue», но как я могу это сделать, когда я уже выбрал *?

1 Ответ

6 голосов
/ 02 апреля 2010

Быстрое исправление:

$this->db->select('events.col1 AS ev_col1,
                   events.col2 AS ev_col2,
                   venues.col1 AS ven_col1,
                   venues.col2 AS ven_col2);

Где col1, col2 - столбцы в ваших таблицах. затем используйте

$row->ven_col1 

для доступа к значениям.

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