Laravel - 查看是否插入或更新了行

时间:2015-12-22 17:15:07

标签: php mysql laravel

我需要获得1(已插入记录)或2(记录已更新)。如何使用Laravel完成这项工作?我无法在他们的文档中找到有关此内容的任何信息。

DB::insert('insert into ratings
    (owner_id, game_id, rating) values (?, ?, ?)
    on duplicate key update rating = values(rating)',
    [
        (int)$body['user'], (int)$gameId, (int)$body['amount']
    ]);

我知道我可以这样得到pdo:

$pdo = DB::connection()->getPdo();

但我认为这不会有帮助......

1 个答案:

答案 0 :(得分:0)

您需要使用似乎返回受影响行数的函数affectingStatement ...

$res = DB::affectingStatement('insert into ratings
(owner_id, game_id, rating) values (?, ?, ?)
on duplicate key update rating = values(rating)', [
    (int)$body['user'], 
    (int)$gameId, 
    (int)$body['amount']
]);

对我来说,当一行更新时返回2,插入一行时返回1,按预期失败时返回0。