2015-10-15 22 views
0

通過查看這些代碼:Laravel應用方法串聯有條件

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

如何在一個更優雅的方式寫這個你知道嗎?

感謝

回答

2

您可以添加where子句相同的查詢對象:

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

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

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

所以基本上聲明僅觸發調用更新時,在這種情況下,我纔可以設置所有的基礎之上。 .. 謝謝 – koalaok