2016-03-15 69 views
1

大家好,我的數據庫結構如下:批量更新查詢沒有口才Foreach循環 - Laravel 5.1

表:分析

id | user_id(fk) | date | finalized(boolean) 

現在我想更新大量數據。例如,我想選擇user_id = 1和日期BETWEEN 2016-03-01和2016-03-20的數據。然後我想更新從0到1的所有那些記錄,我得到的結果列。

我做了什麼如下:

Analytics::where('user_id', $request->get('user_id')) 
->whereBetween('date', [$request->get('from_date'), $request->get('to_date')]) 
->update(array('finalized' => 1)); 

但這不工作,沒有表現出任何的錯誤。請讓我知道如何在雄辯的幫助下做些什麼。提前致謝。

我也看到了Stackover Flow中的其他問題,但答案建議運行foreach循環,這是我不想要的。那麼有沒有什麼辦法,然後好心勸我。再次感謝

+0

的可能的複製[雄辯模型大規模更新](http://stackoverflow.com/questions/22430716/eloquent-model-mass-update) – cwang

+0

@crystalwill,我已經看到了這個問題太,但沒有找到我真正想要的東西。 – Siddharth

回答

2

您確定屬性設置在Analytics模型上,它包括finalized?另外,您是否確認請求對象具有您期望它具有的日期和用戶ID?

另外,你可以去沒有雄辯和直接擊中數據庫。

DB::table('analytics') 
    ->where('user_id', $request->user_id)-> 
    ->whereBetween('date', [$request->from_date, $request->to_date]) 
    ->update(['finalized' => 1]); 
+0

我正在檢查。感謝您的建議 – Siddharth