我需要从两个表中检索数据.第一个是事件列表,第二个是场地列表.
我在两个表中都有一个具有相同名称的字段: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;
Run Code Online (Sandbox Code Playgroud)
视图片段:
foreach ($events as $row) {
echo "<p>{$row->band} ({$row->genre})<br />";
echo "Playing at: {$row->venue}<br /></p>"; // echoes "blues bar"
//more here...
}
Run Code Online (Sandbox Code Playgroud)
2个问题:1)为什么$ row->场地回应场地.而不是events.venue?
B)我如何区分它们?例如.如果我想同时回应events.venue和venues.venue怎么办?我可以做一些像"SELECT venues.venue as name_of_the_venue"这样的事情,但是当我选择了*时,我怎么能这样做呢?
快速解决:
$this->db->select('events.col1 AS ev_col1,
events.col2 AS ev_col2,
venues.col1 AS ven_col1,
venues.col2 AS ven_col2);
Run Code Online (Sandbox Code Playgroud)
其中col1,col2是表中的列.然后用
$row->ven_col1
Run Code Online (Sandbox Code Playgroud)
访问值.
| 归档时间: |
|
| 查看次数: |
6632 次 |
| 最近记录: |