Laravel Raw DB插入受影响的行

时间:2015-07-17 00:13:38

标签: php mysql pdo laravel-4

我正在使用laravel 4 的原始查询,有没有办法检查插入的受影响的行? DB::getPdo()->rowCount();给了我一个{{1 }}。代码如下:

"undefined method" error

如果没有,是否有一种简单的方法可以在不进行两次查询的情况下确定插入是否已完成?

2 个答案:

答案 0 :(得分:4)

您可以使用此功能:

  

int affectedStatement (string $ query,array $ bindings = array())

     

运行SQL语句并获取受影响的行数。

     

<强>参数

     
      
  • string $ query
  •   
  • array $ bindings
  •   
     

返回值

     
      
  • INT
  •   

laravel 4.2以及5.4已经记录了此功能。

请注意insert()statement()的别名,并返回一个布尔值。虽然函数update()delete()affectingStatement()的别名。因此,如果您想要变得有趣并且使评论者感到困惑,您也可以写$rowCount = DB::delete("INSERT IGNORE ...", $bindings) - 它会起作用。

答案 1 :(得分:3)

我确定了一个应该同样有效的解决方法 - 使用INSERT INTO而不是INSERT IGNORE INTO并使用try / catch。

   $query = "INSERT INTO table (id) VALUES (?)";
    try {
        DB::insert($query, array($value));
        return 1;
    } catch (\Exception $e) {
        return 0;
    }