1

我试过这个:

$result = (array)DB::selectOne('SELECT * FROM campaign WHERE id = ? FOR UPDATE', [$data['campaign_id']]);
$campaign = new Campaign($result);
$campaign->counter += 1;
$campaign->save();

但是我在 save 上收到此错误Integrity constraint violation: 1062 Duplicate entry '1' for key,因为它认为我正在尝试使用新的广告系列,而不是现有的广告系列。

编辑:考虑到我设置了主键,为什么它不知道它存在。

4

2 回答 2

3

一种方法是$exists在保存对象之前将属性设置为 true。

$campaign->exists = true;
$campaign->save();

这样,它将触发performUpdate()方法而不是performInsert().

于 2013-07-08T04:36:49.610 回答
0

换成这个怎么样...

$campaign = Campaign::find((int) $data['campaign_id']);

$campaign->counter += 1;

$campaign->保存();

于 2013-07-08T04:38:28.773 回答