CodeIgniter ActiveRecord在JOIN语句中的字段名称
CodeIgniter ActiveRecord在JOIN语句中的字段名称
我正在构建一个涉及JOIN的查询。这是我第一次使用Active Record进行数据库操作,遇到了一点问题。
我想将一个名为companies
的表与users
表连接起来,这样我就可以获取用户所在公司的名称等信息。我已经成功地做到了这一点,代码如下:
function get_profile_by_username($username) { $this->db->join('companies', $this->table_name.'.company_id = companies.id'); $this->db->where('LOWER(username)=', strtolower($username)); $query = $this->db->get($this->table_name); if ($query->num_rows() == 1) return $query->row(); return NULL; }
然而问题在于,companies
表中的字段,即id
和name
,在返回的对象中只被称为name
。
通常情况下,当我编写原始查询时,我会为表格和结果分别指定别名,结果可能会是u.company_id
,c.name
。这样我就知道name
与用户无关,而是公司的名称。虽然现在没有问题,但未来可能会有问题,id
列显然不能同时存在于结果集中,所以它会被覆盖!
我们如何在来自特定表的字段之间进行区分?或者在进行表连接和处理连接查询数据集/对象时是否有更好的方法?
编辑:
如果我以原始查询的方式进行操作,我会这样写:
SELECT u.id, u.username, c.name FROM users AS u JOIN companies AS c ON c.id = u.company_id WHERE u.username = 'foobar';
这很好,但如果我试图在Active Record中这样做,我认为这是非常糟糕的做法,如果能够工作的话。