Laravel Raw DB插入受影响的行

Fel*_*lix 1 php mysql pdo laravel-4

我在laravel 4中使用原始查询有没有办法检查插入内容上的受影响行? DB::getPdo()->rowCount();给我一个"undefined method" error。代码如下:

$query = "INSERT IGNORE INTO table (id) VALUES (?)";
$doQuery = DB::insert($query, array($value));
if ($doQuery) {
    return DB::getPdo()->last();
} else {
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果不是,是否有一种简便的方法可以确定是否完成插入而不进行两次查询?

Pau*_*gel 5

您可以使用此功能:

int impactingStatement(字符串$ query,数组$ bindings = array())

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

参量

  • 字符串$ query
  • 数组$ bindings

返回值

  • 整型

laravel 4.25.4已经记录了该功能。

请注意,这insert()是的别名,statement()并且将返回布尔值。而函数update()delete()是的别名affectingStatement()。因此,如果您想变得有趣并且使审稿人感到困惑,您也可以写信$rowCount = DB::delete("INSERT IGNORE ...", $bindings)-它会起作用。