Laravel 4.2 需要帮助
Laravel 4.2 Help Needed
我的 HomeController.php 中有这段代码,它位于 public 函数 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 -->
我的问题是关于我的用户 table 在我的数据库中,我有一个名为在线的在线专栏。 0 离线,1 在线。如果手动将用户在线状态从 0 更新为 1,那么他们就会显示在上面显示的 ONLINE 块中。但是我怎样才能使它自动化呢?如果用户登录其设置为 1,如果他们注销其设置为 0。
如有任何帮助,我们将不胜感激......
我 运行 laravel 4.2 并且猜测这在 5.4 中会更容易完成
我害怕升级,甚至不想自己尝试。
您可以通过创建和监听事件来实现。
Event::listen('auth.login', function($user)
{
$user->online = 1;
$user->save();
});
Event::listen('auth.logout', function($user)
{
$user->online = 0;
$user->save();
});
您可以在用户会话中查看,当您将数据库驱动程序用于会话时,将会有一个名为 last_activity
的列,如果用户在 15 分钟内没有做任何事情,您就知道它处于离线状态。
您不能依赖于用户是否注销。不是每个人每次都这样做。
我的 HomeController.php 中有这段代码,它位于 public 函数 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 -->
我的问题是关于我的用户 table 在我的数据库中,我有一个名为在线的在线专栏。 0 离线,1 在线。如果手动将用户在线状态从 0 更新为 1,那么他们就会显示在上面显示的 ONLINE 块中。但是我怎样才能使它自动化呢?如果用户登录其设置为 1,如果他们注销其设置为 0。
如有任何帮助,我们将不胜感激......
我 运行 laravel 4.2 并且猜测这在 5.4 中会更容易完成 我害怕升级,甚至不想自己尝试。
您可以通过创建和监听事件来实现。
Event::listen('auth.login', function($user)
{
$user->online = 1;
$user->save();
});
Event::listen('auth.logout', function($user)
{
$user->online = 0;
$user->save();
});
您可以在用户会话中查看,当您将数据库驱动程序用于会话时,将会有一个名为 last_activity
的列,如果用户在 15 分钟内没有做任何事情,您就知道它处于离线状态。
您不能依赖于用户是否注销。不是每个人每次都这样做。