【发布时间】:2017-01-31 21:30:44
【问题描述】:
我的 HomeController.php 中有这段代码,它位于公共函数 home() 块中
//Fetch Users Online
$online = DB::table('users')->where('online','1')->get();
//Get All Users Online Count
$num_online = DB::table('users')->where('online','1')->count();
//Get All ADMIN Online Count
$admin_online = DB::table('users')->where('online','1')->where('group_id','4')->count();
//Get All MODS Online Count
$mod_online = DB::table('users')->where('online','1')->where('group_id','6')->count();
//Get All VIP Online Count
$vip_online = DB::table('users')->where('online','1')->where('group_id','8')->count();
//Get All UPLOADER Online Count
$uploader_online = DB::table('users')->where('online','1')->where('group_id','7')->count();
//Get All MEMBERS Online Count
$member_online = DB::table('users')->where('online','1')->where('group_id','3')->count();
在 home.blade.php 中转发
<div class="col-md-10 col-sm-10 col-md-offset-1">
<div class="clearfix visible-sm-block"></div>
<div class="panel panel-default">
<div class="panel-heading"><h4>Online Users <span class="badge">{{ $num_online }}</span></h4></div>
<div class="panel-body">
@foreach($online as $o)
<span class="badge-user group-member">
{{ $o->username }}
</span>
@endforeach
</div>
<div class="panel-footer">
<div class="row">
<div class="col-sm-12">
<span class="badge-user group-member">Member ({{ $member_online }})</span> <span class="badge-user group-uploader">Uploader ({{ $uploader_online }})</span> <span class="badge-user group-vip">VIP ({{ $vip_online }})</span> <span class="badge-user group-staff">Mod ({{ $mod_online }})</span> <span class="badge-user group-su">Admin ({{ $admin_online }})</span>
</div>
</div>
</div>
</div>
</div>
<!-- /Online Users -->
我的问题在我的数据库中的用户表中,我有一个名为 online 的在线列。 0 离线,1 在线。如果手动将用户在线状态从 0 更新为 1,那么他们应该会显示在上面显示的 ONLINE 块中。但是我怎样才能自动化呢?如果用户登录,则设置为 1,如果用户注销,则设置为 0。
任何帮助将不胜感激.....
我正在运行 laravel 4.2 并猜测这在 5.4 中会更容易完成 我害怕升级,甚至不想自己尝试。
【问题讨论】:
-
您会遇到不退出的用户的问题。要么为此使用 websockets,要么每次用户在网站上做某事时更新记录以存储他们的最后一次活动日期,如果他们在过去 5-10 分钟内做过某事,则将其视为“在线”。
标签: laravel laravel-4.2