我在laravel 5.3中遇到过一个问题,也许你们遇到了类似的问题,并知道是什么原因造成的。
我正在加载前10个活动流消息(雄辩的模型活动,其中包含"读取"列可以是0或1并显示用户是否已阅读它)以及是否有超过10个活动,然后在页面底部有一个加载更多按钮。当点击加载更多按钮时,我通过ajax调用从后端获取10条消息。
问题在于:
$activities = Activity::where( 'to_user_id', Auth::id() )
->latest()
->offset( $offset )
->limit( 10 )
->get();
Activity::where( 'to_user_id', Auth::id() )
->latest()
->offset( $offset )
->limit( 10 )
->update( [ 'read' => 1 ] );
我在第一次加载和ajax加载时运行上面的代码。第一次加载通过routes / web.php发生,它完美地工作并将最初的10个活动标记为read ..
Ajax调用是通过ActivityController文件处理的,但由于某种原因,输出是正确的但是" read"列未更新。我申请了临时修复:
foreach($activities as $activity) {
$activity->read = 1;
$activity->save();
}
但我仍然需要弄清楚出了什么问题:
Activity::where( 'to_user_id', Auth::id() )
->latest()
->offset( $offset )
->limit( 10 )
->update( [ 'read' => 1 ] );
答案 0 :(得分:0)
因为您的第一个WEB请求正在更新->get()
之后的所有内容。用Eloquent进行那种大规模更新是不可能的。