我正在使用laravel 4 的原始查询,有没有办法检查插入的受影响的行? DB::getPdo()->rowCount();
给了我一个{{1 }}。代码如下:
"undefined method" error
如果没有,是否有一种简单的方法可以在不进行两次查询的情况下确定插入是否已完成?
答案 0 :(得分:4)
您可以使用此功能:
int affectedStatement (string $ query,array $ bindings = array())
运行SQL语句并获取受影响的行数。
<强>参数强>
- string $ query
- array $ bindings
返回值
- INT
请注意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;
}