我需要从两个表中检索数据。第一个是事件列表,第二个是场地列表。
我在两个表中都有一个同名的字段:events.venue(这是一个ID)和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-&gt;场所回显场地。而不是events.venue?
B)我如何区分它们?例如。如果我想同时回应events.venue和venues.venue怎么办?我可以做一些像“SELECT venues.venue as name_of_the_venue”这样的事情,但是当我选择了*时,我怎么能这样做呢?
答案 0 :(得分:6)
快速修复:
$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
访问值。