2017-07-03 39 views
0

我正在使用laravel 5.3。在我的通知模式中,我需要獲取所有未讀通知,然後將其更新爲已讀。Laravel 5.3獲取所有記錄,然後更新它

正確我有後Model::where()->get();

用foreach做可能配備map();get();

由於我認爲它應該可以與

$notifications->map(function($noti){ 
    $noti->is_read= 1; 
    $noti->update(); 
}); 

但它不工作。

+0

我不會在這裏一個foreach去。每個循環都會導致一個數據庫查詢。您應該使用特定查詢一次全部更新它們。 –

回答

0

您應該一次全部更新。在相同的where子句在您選擇

Model::where(...)->update(['read' => true]); 

或一切你讀的指標

+0

感謝您的回覆, Bt我需要這些記錄。使用這個我需要再次獲得所有記錄。 –

+0

正如我認爲它應該有可能與 $ notifications-> map(function($ noti){noti-> is_read = 1; $ noti-> update(); }); 但它不工作。 –

+0

你有兩個請求仍然運行得更好。一個用於閱讀,一個用於更新。如果您期望超過3個通知,則不應循環。 –