【发布时间】:2015-10-10 06:38:44
【问题描述】:
目前我正在开发我的 laravel 应用程序中的通知功能。通知不需要是实时的,用户只需刷新页面,系统就会再次获取最新的通知计数并显示在导航栏的顶部。我通过在我的基本控制器中实现 get count 功能实现了这一点,我的所有其他控制器都将从它扩展。以下是我如何获取通知计数的示例。
我有两张桌子,ap_thread 和 ap_thread_comment。 ap_thread 有一列 last_visit_date,ap_thread_comment 有一列 created_at。一个线程可以有多个 cmets,我只需查询 ap_thread_comment created_date 何时大于 ap_thread last_visit_date 并获得总未读评论。 ap_thread last_visit_date 将在线程所有者访问其线程时更新。
现在的问题是当一些用户对线程发表评论时,假设有 2 个未读的 cmets。但是当线程所有者再次访问他们的线程时,它会显示 2 个未读的 cmets 这是因为基本控制器将首先触发而不是仅跟随控制器更新last_visit_date。如果我再次刷新页面,我可以获得正确的计数。我在执行这样的通知时做错了吗?下面是我的代码
class BaseController extends Controller{
public function __construct() {
$new_thread_comment_count = 50; // 50 unread comments for example.
View::share('new_thread_comment_count', $new_thread_comment_count);
}
class ThreadController extends BaseController{
// update last visit date function
}
【问题讨论】:
-
只是为了检查我是否正确,您是否看到接收通知的用户在访问线程时应该看到计数为 0 时看到计数为 2?