Laravel 有条件地应用方法连接

Laravel apply method concatenation conditionally

通过查看这段代码:

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()

关于如何以更优雅的方式编写它有什么想法吗?

谢谢

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

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

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

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