我是 Laravel 的初學者。我在我的項目中使用 Laravel 5.8。我有這個模型:class User extends Authenticatable implements MustVerifyEmail{ use Notifiable; public static $roles = []; protected $fillable = ['last_activity', 'enable', 'name', 'surname', 'email', 'email_verified_at', 'password', 'counter', 'url_address', 'isCompany', 'isMailing']; protected $hidden = [ 'password', 'remember_token', ]; public function roles() { return $this->belongsToMany('App\Role'); } public function mainRole() { return $this->hasOne('App\Role'); } public function comments() { return $this->hasMany('App\Comments'); } public function hasRole(array $roles) { foreach ($roles as $role) { if (isset(self::$roles[$role])) { if (self::$roles[$role]) return true; } else { self::$roles[$role] = $this->roles()->where('name', $role)->exists(); if (self::$roles[$role]) return true; } } return false; } public function loginHistory() { return $this->hasMany('App\UserLoginHistory'); } public function companies() { return $this->belongsTo('App\Companies', 'company_id'); } public function images() { return $this->hasManyThrough('App\UploadedFiles', 'App\User', 'id', 'photoable_id'); } public function scopeOfRoleType($query, $types) { return $query->whereHas('roles', function ($q) use ($types) { $q->whereIn('name', $types); }); }}在 last_activity - 我有日期,例如 2019-07-16 10:26:12我需要在我的樹枝頁面上顯示:@foreach ($usersList as $user)User name: $user->name is now ...... (offline or online)@endforeach我想看看用戶是在線還是離線。我想這樣的事情:public function isOnline() { return ..... }但我不知道如何檢查此活動:(
2 回答
米脂
TA貢獻1836條經驗 獲得超3個贊
這取決于您如何定義在線。Http 是一種無狀態協議。
但是,您可以將在線定義為在過去五分鐘內處于活動狀態。這樣你就可以實現這樣的功能:
public function isOnline(): bool
{
return $this->last_activity->gt(Carbon\Carbon::now()->subMinutes(5));
}
還要確保將 last_activity 標記為日期:
protected $dates = ['last_activity'];
隨著您的應用程序的增長,我會考慮另一種解決方案,而不是將所有用戶從數據庫加載到內存中。
溫溫醬
TA貢獻1752條經驗 獲得超4個贊
我想“在線”是指使用網站并與之互動。您必須確定一個時間間隔,在該時間間隔內,用戶可以被視為“在線”或“離線”并且不再進行交互。也許……10分鐘?將“上次活動”字段與當前時間進行比較,以查看它們是否處于活動狀態。用于示例Carbon::now()獲取當前時間并進行比較。
- 2 回答
- 0 關注
- 276 瀏覽
添加回答
舉報
0/150
提交
取消
