2013-10-22 53 views
1

我使用codeigniter來產生兩個表的左連接,但需要刪除活動記錄應用於表名的括號。你知道SELECT blah FROM ('some table')我真的需要這些括號消失。Codeigniter Active Record:是否可以刪除表名

這裏是我的輸入數組:

$retrieve_arr = array(
    'table' => 'entries', 
    'select' => array('entries.entry_id', 'entries.score', 'sc_users.name', 'clients.name'), 
    'joins' => array(
     'clients' => 'entries.client_id = clients.client_id', 
     'sc_users' => 'entries.sc_user_id = sc_users.sc_user_id' 
    ), 
    'joinType' => 'left', 
    'where' => 'null' 
    ); 

這裏是我的模型:

$retrieve = new Data(); 
if($get_arr['select'] != 'null') 
{ 
    $query = $retrieve->db->select($get_arr['select']); 
} 
foreach($get_arr['joins'] as $additional => $value) 
{ 
    $retrieve->db->join($additional, $value, $get_arr['joinType']); 
} 
if($get_arr['where'] != 'null') 
{ 
    foreach ($get_arr['where'] as $name => $value) 
    { 
     $retrieve->db->where($name, $value); 
    } 
} 
$query = $retrieve->db->get($get_arr['table']); 
$queryData = $query->result_array(); 

return $queryData; 

這裏是我的查詢字符串:

SELECT `entries`.`entry_id`, `entries`.`score`, `sc_users`.`name`, `clients`.`name` FROM (`entries`) LEFT JOIN `sc_users` ON `entries`.`sc_user_id` = `sc_users`.`sc_user_id` LEFT JOIN `clients` ON `sc_users`.`client_id` = `clients`.`client_id`Array 

我一直在尋找這個有一段時間,所以你的幫助非常感謝。

+0

我只是想指出,這個詞陣列在查詢字符串的末尾實際上是形成別的我正在回顯。 – Nich

+2

爲什麼你不想在你的SQL字符串中使用括號?你想解決什麼問題? (這不會發生[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem),是嗎?)這是一個100%有效的SQL查詢。 –

+0

查詢有效嗎? – iGbanam

回答

0

如果你指的是'反引號,在選擇()部分,使用虛假的第二個參數(參閱用戶手冊獲取更多信息)

+0

不,它的括號將用於from部分中的表名。 – Nich

+0

啊,括號。 1)你爲什麼需要他們?不能想到任何SQL的原因2)只使用簡單的$ this-> db-> query($ sql)方法,而不是活動記錄 – jmadsen

+0

嗨,謝謝,我希望這不會是解決方案,如果你閱讀我在20分鐘前添加的評論解釋了我是如何得出結論的。另一種解決方案是改變表中的名稱,使它們不完全相同。但是,如果您有第三種解決方案,那麼您的解決方案非常耗時,而另一種解決方案顯然是矛盾的,那麼一切都會很棒! – Nich

相關問題