[英]CodeIgniter ActiveRecord field names in JOIN statement
我正在構建一個涉及 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
在 object 中返回,簡稱為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';
這很好,但如果我試圖在活動記錄中這樣做,我認為這是非常糟糕的做法,如果它有效的話。
如果您想要 select 表中的某些特定列,請使用db->select()
。 您可以為表指定別名,添加一些條件等。發送第二個參數FALSE
以不轉義特殊字符。
$this->db->select('u.id, u.username, c.name', false);
$this->db->from('user as u');
$this->db->join('companies as c', 'u.company_id = c.id');
$this->db->where('LOWER(u.username)=', strtolower('foobar'));
$query = $this->db->get();
$this->db->select('ut.nombre as nombreu, ut.apellido, ru.nombre as nombrer');
$this->db->from('User_table ut');
$this->db->join('Role_usuario ru', 'ut.role_user = ru.Id');
$query = $this->db->get();`
`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.