私は複合キー(user_id、category_id)を持つmysqlテーブルを持っています。 は私がYiiコンポジットの主キーがisNewRecordである
$userCategory = new UserCategory;
$userCategory->user_id = 1;
$userCategory->category_id = 15;
echo $userCategory->isNewRecord; //always true
$userCategory->last_access = Now();
$userCategory->save();
を以下のように、これらのレコードの最後のアクセスを更新しようとしています{$ userCategory-> isNewRecord}と私はMySQLが複合主キーの重複エラーを生成)(保存しようとします。
は、私はまた、UserCategoryモデルにこれを追加しかし、助けにはならなかった
public function primaryKey() {
return array('user_id', 'category_id');
}
****アップデート: 混乱させて申し訳ありません。私の質問は、Yiiフレームワークの「重複キー更新」と同じ結果を得る方法です。つまり、1つの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;
}
該当する場合は、新しいレコードを入力するための私の回答の編集を確認してください。 – Snivs