如果记录已经存在,我正在尝试更新数据库表中的记录。如果记录不是数据库表,则插入新记录。
我在下面写了代码
DB::enableQueryLog();
$user->userCommission()->save(new UserCommission($input['commission']));
dd(DB::getQueryLog());
当EnableQueryLog它始终显示插入查询时,如果记录已经在表中。
这是我的查询..
array:1 [▼
0 => array:3 [▼
"query" => "insert into `user_commissions` (`created_by`, `status_id`, `percent`, `user_id`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?, ?)"
"bindings" => array:6 [▼
0 => "1"
1 => "1"
2 => "0.10"
3 => 21
4 => "2016-08-13 08:07:45"
5 => "2016-08-13 08:07:45"
]
"time" => 2.57
]
]
在上面的查询中,user_id 21记录已在表中,尽管Save()
将记录插入数据库。
这段代码错在哪里? 我可以在桌子上使用唯一的密钥吗?
答案 0 :(得分:1)
至少需要一个唯一列来查找或更新表记录
$userCommission = UserCommission::firstOrNew(array('created_by' => 1));
$userCommission->status_id = 1;
$user()->userCommission()->save($userCommission);
答案 1 :(得分:0)
还有另一种方法可以检查这个.update_at& created_at将由laravel default
插入userCommission::updateOrCreate([
'user_id' => 21
],[
'created_by' => 1,
'status_id' => 1,
'percent' => "0.10",
'user_id' => 21,
]);