Laravel有条件地应用方法连接

时间:2015-10-15 13:28:41

标签: laravel methods concatenation conditional

通过查看此代码:

if($status == 'processed'){
    DB::connection('mydb')
                            ->table('logs')
                            ->where('id', $id)
                            ->update(array('status' => $status));
}else{
   DB::connection('mydb')
                            ->table('logs')
                            ->where('id', $id)
                            ->where('id2', $id2)
                            ->update(array('status' => $status));
}

代码的语义没有多大意义,因为它是来自更大文件的摘录。无论如何我都会关注如何在给定条件之后连接更多方法 像上面那样

if(A)
    DB->method1()->method2()
else  
    DB->method1()->method3()->method2()

关于如何以更优雅的方式写这个的任何想法?

由于

1 个答案:

答案 0 :(得分:2)

您可以向同一查询对象添加where子句:

$query = DB::connection('mydb')->table('logs')->where('id', $id);

if ($status != 'processed') {
    $query->where('id2', $id2);
}

$query->update(['status' => $status]);