Laravel 4,Turn DB :: select into Eloquent object

时间:2013-07-08 03:02:03

标签: laravel laravel-4 eloquent

我试过了:

$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时收到此错误,因为它认为我正在尝试使用新广告系列,而不是现有广告系列。

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

2 个答案:

答案 0 :(得分:3)

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

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

这样会触发performUpdate()方法,而不是performInsert()

答案 1 :(得分:0)

这怎么样......

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

$ campaign-> counter + = 1;

$活动层级>保存();