2016-10-13 53 views
0

我有一種情況是更新基於id的行並返回完整的行。我可以在兩個查詢中完成,但我只想在一個查詢中完成。我寫這篇文章...laravel更新並選擇

$result= DB::table($this->table) 
      ->whereRaw($where['rawQuery'], $where['bindParams'] ? $where['bindParams'] : array()) 
      ->increment($updateField); 
if($result){ 
     return DB::table($updateTable) 
      ->select('id') 
      ->where('campaign_id',$where['bindParams']) 
      ->where('date',date("Y-m-d")) 
      ->get(); 
}else{ 
    throw Exception("Error in fetching data"); 
} 
+0

你做了什麼樣的錯誤? –

+0

我沒有收到任何錯誤,只有我想在單個查詢中完成。不想爲單一功能打兩次分貝 –

+0

這是不可能的,你需要打兩次數據庫。 – Jeemusu

回答

1

我複製這從你在你的問題發表意見的內容:

不,我想返回更新行的id或完整的行如果可能的話

如果要返回ID剛剛更新的'行'你正在談論。你可以使用雄辯來完成這一點。

您可以使用路線是這樣的:

Route::put('demo/{id}', [email protected]); 

然後在您的控制器的更新功能,你可以得到的ID。 使用$ model = Model :: find(id);查找模型。

用你得到的數據做事情。 Like $ model-> name = Input :: get('name');

然後使用$ model-> save();

保存後您可以做$ model-> id;

現在你回到剛剛更新的行的ID。

回頭看看這個問題:

Laravel, get last insert id using Eloquent

+0

在我發佈的鏈接中,也可以使用數據庫查詢生成器來完成此操作。 – DennisUtrHU

-1

但是,任何方式,它永遠是至少2查詢(一個SELECT和MySQL中的更新,但是你這樣做)

你可以,如果你檢查Laravel Eloquent想要一個「更清潔」的方式來實現這一點。