使用2个字段的组合更新表而不使用主键

时间:2012-08-19 14:24:01

标签: mysql cakephp

我试图将此直接更新查询转换为cake的更新方式。

$this->Test->query("UPDATE tests SET rating=3 WHERE goal_id=1 AND employee_id=28");

通常我们更新时设置id然后保存,对吗?

$this->id = 1;
$this->Test->save($data);

但是我在这里利用(goal_id + employee_id)的组合来识别行。那么我该如何更新呢?

1 个答案:

答案 0 :(得分:0)

您可以使用updateAll(),您恰好正在更新1条记录,而不是该方法名称所暗示的许多记录。

Model::updateAll(array $fields, array $conditions)

因此,对于您的测试,您将使用:

$this->Test->updateAll(
    array('rating' => 3),
    array('goal_id' => 1, 'employee_id' => 28)
);