如何在不知道记录的ID的情况下更新单个字段?我有用户的用户名,我不想通过查询获取ID来浪费资源。CakePHP savefield()不知道记录的ID
注意:我知道我可以通过updateAll()
来实现这个目标,但是这个接缝就像过度杀人一样,但是有没有更好的方法?
我可以如何限制updateAll()
只搜索一条记录,然后完成,因为我不希望它只有一个可能的匹配时继续搜索。
如何在不知道记录的ID的情况下更新单个字段?我有用户的用户名,我不想通过查询获取ID来浪费资源。CakePHP savefield()不知道记录的ID
注意:我知道我可以通过updateAll()
来实现这个目标,但是这个接缝就像过度杀人一样,但是有没有更好的方法?
我可以如何限制updateAll()
只搜索一条记录,然后完成,因为我不希望它只有一个可能的匹配时继续搜索。
updateAll()
是在这种情况下去的路。
所有其他保存方法都需要知道ID。
您也可以使用query()
方法:$this->Model->query($sql)
但是,请记住,值不会在这种方法自动转义。
如果你使用的是Cake(或者其他任何框架),那么你就会牺牲一些效率和不必要的查询。但是,您仍然可以运行自定义查询。例如,如果您知道用户名并尝试更新first_name字段,则可以执行以下操作:
$this->User->query("UPDATE users SET first_name = '$new_firstname' WHERE username = '$username'");
这是因为牺牲了效率,我试图尽可能提高查询效率。感谢您的输入! – Paramount 2011-04-30 18:16:21
感谢您对'query()'的提示而不是转义。除非我注意到性能问题,否则我会坚持使用'updateAll()'。 – Paramount 2011-04-30 18:10:45
'updateAll()'是最好的选择,'query()'应尽可能避免。 – Arjan 2011-04-30 18:55:08