2011-04-30 33 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