codeigniter区分JOINed表中的字段名称

时间:2010-04-02 01:02:45

标签: codeigniter

我需要从两个表中检索数据。第一个是事件列表,第二个是场地列表。

我在两个表中都有一个同名的字段: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”这样的事情,但是当我选择了*时,我怎么能这样做呢?

1 个答案:

答案 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 

访问值。