Мне нужно получить данные из двух таблиц. первый список событий, второй список мест.
У меня есть поля с одинаковыми именами в обеих таблицах: 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», но как я могу это сделать, когда я уже выбрал *?