簡體   English   中英

CodeIgniter ActiveRecord JOIN語句中的字段名

[英]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中的字段,它們是idname在 object 中返回,簡稱為name

通常,當我編寫原始查詢時,我會為表提供別名,結果類似於u.company_idc.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM