CodeIgniter ActiveRecord JOIN 语句中的字段名称
2022-08-30 21:49:25
我正在构建一个涉及 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';
这很好,但是如果我试图在活动记录中这样做,我认为这是相当糟糕的做法,如果它有效的话。