2011-04-30 73 views
0

如何在不知道記錄的ID的情況下更新單個字段?我有用戶的用戶名,我不想通過查詢獲取ID來浪費資源。CakePHP savefield()不知道記錄的ID

注意:我知道我可以通過updateAll()來實現這個目標,但是這個接縫就像過度殺人一樣,但是有沒有更好的方法?

我可以如何限制updateAll()只搜索一條記錄,然後完成,因爲我不希望它只有一個可能的匹配時繼續搜索。

回答

2

updateAll()是在這種情況下去的路。

所有其他保存方法都需要知道ID。

您也可以使用query()方法:$this->Model->query($sql)

但是,請記住,值不會在這種方法自動轉義。

+0

感謝您對'query()'的提示而不是轉義。除非我注意到性能問題,否則我會堅持使用'updateAll()'。 – Paramount 2011-04-30 18:10:45

+0

'updateAll()'是最好的選擇,'query()'應儘可能避免。 – Arjan 2011-04-30 18:55:08

1

如果你使用的是Cake(或者其他任何框架),那麼你就會犧牲一些效率和不必要的查詢。但是,您仍然可以運行自定義查詢。例如,如果您知道用戶名並嘗試更新first_name字段,則可以執行以下操作:

$this->User->query("UPDATE users SET first_name = '$new_firstname' WHERE username = '$username'"); 
+0

這是因爲犧牲了效率,我試圖儘可能提高查詢效率。感謝您的輸入! – Paramount 2011-04-30 18:16:21