我试过了:
$result = (array)DB::selectOne('SELECT * FROM campaign WHERE id = ? FOR UPDATE', [$data['campaign_id']]);
$campaign = new Campaign($result);
$campaign->counter += 1;
$campaign->save();
但是我在保存Integrity constraint violation: 1062 Duplicate entry '1' for key
时收到此错误,因为它认为我正在尝试使用新广告系列,而不是现有广告系列。
编辑:为什么它不知道它存在,考虑到我有主键设置。
答案 0 :(得分:3)
一种方法是在保存对象之前将$exists
属性设置为true。
$campaign->exists = true;
$campaign->save();
这样会触发performUpdate()
方法,而不是performInsert()
。
答案 1 :(得分:0)
这怎么样......
$ campaign = Campaign :: find((int)$ data ['campaign_id']);
$ campaign-> counter + = 1;
$活动层级>保存();