Laravel DB更新异常

时间:2016-07-19 06:07:29

标签: php laravel

我试图获取异常,如果更新方法失败我只是检查这个尝试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);
 }

3 个答案:

答案 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
}