【发布时间】:2013-03-04 12:37:06
【问题描述】:
我有一个带有复合键( user_id , category_id )的 mysql 表; 我正在尝试更新这些记录的最后一次访问,如下所示
$userCategory = new UserCategory;
$userCategory->user_id = 1;
$userCategory->category_id = 15;
echo $userCategory->isNewRecord; //always true
$userCategory->last_access = Now();
$userCategory->save();
{$userCategory->isNewRecord} 和当我尝试 save() 时,MySQL 会为复合主键生成重复错误。
我也将此添加到 UserCategory 模型中,但没有帮助
public function primaryKey() {
return array('user_id', 'category_id');
}
****更新: 对困惑感到抱歉。我的问题是如何在 Yii 框架中实现与“ON DUPLICATE KEY UPDATE”相同的结果。换句话说,如何在一个 SQL 查询中进行插入或更新。如果您查看save()的源代码
public function save($runValidation=true,$attributes=null)
{
if(!$runValidation || $this->validate($attributes))
//checking if new record
return $this->getIsNewRecord() ? $this->insert($attributes) : $this->update($attributes);**
else
return false;
}
【问题讨论】:
-
检查我的答案中的编辑以在适用时填充新记录。