2017-07-03 65 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个通知,则不应循环。 –