2011-08-18 70 views
0

我在CI的車型之一下列功能的語句:笨被丟棄加入SQL語句(活動記錄)

function update_uu_feature($feature, $lang, $data) 
{ 
    $feature = str_replace('_', '-', $feature); 
    $this->db->where('navigation', $feature); 
    $this->db->where('language', $lang); 
    $this->db->join('all_video_names', 'all_video_names.video_id = all_uu_features.video_id', 'inner'); 
    return $this->db->update('all_uu_features', $data); 
} 

但「加盟」行被丟棄。在分析器中,它輸出:

UPDATE `all_uu_features` SET `page_title` = 'Laser', `title` = 'Test', `keywords` = 'Test', `description` = 'Test', `feature_text` = '<p>Test text</p>', `learn_more_about` = 'Test Text 2', `overview` = 'test', `copy` = 'test' WHERE `navigation` = 'laser-interface' AND `language` = 'en' 

有人可以幫我一下嗎?謝謝。除了all_video_names表中的視頻名稱之外,大多數數據位於all_uu_features表中。這兩個參與每個表中的video_id列。換句話說,除了視頻名稱,上述語句中的所有列都在all_uu_features中。希望這是明確的。

上面的SQL語句顯示數據在帖子中返回並由函數處理,但由於某種原因它只是不接受連接。

+0

發生,如果什麼你把'join'放在'where'之前? –

+0

相同。沒有加入條款。 – sehummel

+0

是的,剛剛閱讀CI DB代碼似乎不應該有所作爲。只是認爲這可能值得一試,因爲這是SQL語句中的通常順序。想知道如果可能CI活動記錄的東西忽略與UPDATE語句聯合在一起... JOIN –

回答

0

它看起來非常像CI的Active Record類不支持在其update()操作中使用連接。當然,如果你看一下代碼(在DB_active_rec.php),該update()方法甚至不看已經成立

從更新()任何聯接:

$sql = $this->_update($this->_protect_identifiers($table, TRUE, NULL, FALSE), $this->ar_set, $this->ar_where, $this->ar_orderby, $this->ar_limit); 
+0

那麼這很愚蠢。所以你一次只能更新一張桌子? – sehummel

+0

@ shummel7845傳統上,SQL數據庫一次只允許更新一個表,我猜測這會成爲CI中這種限制的原因。 –

+0

我不知道。好的,謝謝你的幫助,馬特。 – sehummel