Laravel 5.0:通知系统的实现(Facebook,Twitter和stackoverflow)

时间:2016-04-27 01:41:17

标签: javascript php laravel twitter

我是Laravel和Web开发的绝对初学者。 我想在Facebook,Twitter和stackoveflow上添加类似于一个的通知系统。 但是,我不知道从哪里开始。 我想向熟悉如何设置系统的任何人提出几个问题。

第一个问题:

我想知道一个方法/函数,告诉我调用方法/函数的次数。在我的情况下,我想有功能的数量'存储'在header.blade.php文件中调用。

就像facebook,twitter和stackoverflow告诉你,你的朋友和粉丝对你的照片或推文发表评论,或者有人对你的问题提出答案,然后这个数字出现在通知图标上,我想要功能号码' store'已被召唤一段时间。

ReasonsController.php

public function store(CreateReasonRequest $request, $course_id){

    $reason = new Reason($request->all());
    $reason->course_id = $course_id;
    \Auth::user()->reasons()->save($reason);
    return redirect('student/home');
}

Header.blade.php

<a id="dLabel" role="button" data-toggle="dropdown" data-target="#" href="/page.html">
     <span class = "badge" id = "number">
         <i class="glyphicon glyphicon-bell">
            {{-- the number of the function 'store' being called comes here--}}
          </i>
     </span>
 </a>

第二个问题:

当用户点击Facebook和Twitter上的图标时,图标上的数字会消失,如您所想。我该怎么做?我应该用什么语言,javascript? jQuery的? CSS?

英语不是我的第一语言,所以如果这篇文章没有意义,请留下你的评论。 任何意见,将不胜感激!!谢谢!

1 个答案:

答案 0 :(得分:1)

第一个问题:

每次调用store()时,都会将新的Reason保存到数据库并将其与用户权限相关联?要显示原因的数量,您只需要确定与登录用户相关联的记录数(在表reasons中)。从上面的代码判断,您已经在User模型中设置了reasons关系,获取总行数就像调用\Auth::user()->reasons()->count();一样简单。

将此代码放入Header.blade.php

   @if (Auth::guest())
      Please login first.
   @else
     {{ Auth::user()->reasons()->count() }}
   @endif

第二个问题:

假设您有一个notifications表,您可以向架构添加unread布尔值,以了解用户是否已阅读通知。当您需要未读通知的数量时,请编写

Auth::user()->notifications()->where("unread",true)->count()

当您单击该图标时,会向服务器发送AJAX request以获取所有未读消息。 JavaScript用于清除通知计数。同时,服务器将与该用户相关的所有通知的unread属性设置为false。因此,在页面刷新时,Auth::user()->notifications()->where("unread",true)->count()将返回0.