我试图获取异常,如果更新方法失败我只是检查这个尝试catch块它不会返回任何异常,因为我的数据库中不存在这个项目ID我只有大约一百条记录。
try {
$project = DB::table('project')
->where('prj_id', '987654' )
->update([
'prj_status' => 'open',
'prj_updated_date' => Carbon::now()
]);
}catch(\Exception $e){
dd($e);
}
答案 0 :(得分:4)
SQL中没有现有行的更新不会失败。如果您运行UPDATE foo SET bar = 'foobar' WHERE 1 = 2;
之类的查询,您的数据库将很乐意完成这项工作并报告0行已更新。
您必须检查$ project的值以查看更新是否确实更新了任何行
答案 1 :(得分:0)
如果你正在使用Laravel 5,请使用该模型来决定最终将存储在数据库中的内容。
因此,使用您的project
模型,您将拥有类似的内容:
$project = Project::findOrFail('987654')
->update([
'prj_status' => 'open',
'prj_updated_date' => Carbon::now()
]);
如果您要查找的内容的ID不存在,您将收到未找到的异常。
答案 2 :(得分:0)
$projects_updated = DB::table('project')
->where('prj_id', '987654' )
->update([
'prj_status' => 'open',
'prj_updated_date' => Carbon::now()
]);
if($projects_updated) {
// n rows updated, do something
}
else {
// nothing updated
}