Hari ini, saya ingin menunjukkan cara mendapatkan users online di laravel. Kami akan melihat contoh laravel mendapatkan semua users yang masuk. Anda akan belajar laravel memeriksa user secara online. Kami akan menggunakan laravel get online users. Mari kita mulai dengan laravel memeriksa apakah user online atau tidak.
Dalam tutorial ini, saya akan memberikan contoh sederhana tentang cara mendapatkan semua user online dengan waktu terakhir terlihat di laravel. Anda dapat dengan mudah menggunakan contoh ini dengan versi laravel 6, laravel 7 dan laravel 8.
Di sini, kita akan menambahkan kolom baru "last_seen" di tabel users dan membuat middleware baru untuk web yang akan memeriksa apakah user login kemudian akan memperbarui waktu last_seen dan menambahkan kunci untuk online di cache, sehingga kita dapat memeriksa user online atau tidak menggunakannya. jadi ikuti saja langkah di bawah ini dan lakukan sekarang:
Langkah 1: Instal Laravel
Pertama-tama kita perlu mendapatkan aplikasi versi Laravel 8 baru menggunakan perintah di bawah ini, Jadi buka terminal atau command prompt Anda dan jalankan perintah di bawah ini:
composer create-project --prefer-dist laravel/laravel blog
Langkah 2: Tambahkan Field Baru ke Tabel Users
di sini, kami akan membuat migrasi baru untuk menambahkan filed "last_seen":
php artisan make:migration add_new_column_last_seen
database/migrations/2021_07_12_032305_add_new_column_last_seen.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddNewColumnLastSeen extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function(Blueprint $table){
$table->timestamp('last_seen')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}
sekarang mari kita jalankan perintah migration:
php artisan migrate
sekarang, tambahkan saja filed last_seen pada model User seperti di bawah ini:
app/Model/User.php
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'last_seen'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
Langkah 3: Generate Auth Scaffolding
di sini, kita akan menggunakan laravel ui untuk menghasilkan scaffolding auth, jadi mari kita jalankan perintah di bawah ini:
composer require laravel/ui --dev
setelah menginstal paket komposer, jalankan perintah di bawah ini:
php artisan ui bootstrap --auth
sekarang, jalankan perintah instal npm:
npm i && npm run dev
Langkah 4: Buat Middleware
di sini, kami akan membuat UserActivity untuk memperbarui waktu terakhir terlihat dan menambahkan status online, mari jalankan perintah di bawah ini:
php artisan make:Middleware UserActivity
sekarang, perbarui kode middleware seperti di bawah ini:
app/Http/Middleware/UserActivity.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Auth;
use Cache;
use App\Models\User;
class UserActivity
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (Auth::check()) {
$expiresAt = now()->addMinutes(2); /* keep online for 2 min */
Cache::put('user-is-online-' . Auth::user()->id, true, $expiresAt);
/* last seen */
User::where('id', Auth::user()->id)->update(['last_seen' => now()]);
}
return $next($request);
}
}
sekarang daftar, middleware ini ke file kernel:
app/Http/Kernel.php
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
...........
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\RestrictIpAddressMiddleware::class,
\App\Http\Middleware\UserActivity::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
...........
}
Langkah 5: Buat Route
Pada langkah ini kita perlu membuat beberapa route untuk menampilkan fungsi user online.
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('online-user', [UserController::class, 'index']);
Langkah 6: Buat Controller
pada langkah ini, kita perlu membuat UserController dan menambahkan kode berikut pada file itu:
app/Http/Controllers/UserController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$users = User::select("*")
->whereNotNull('last_seen')
->orderBy('last_seen', 'DESC')
->paginate(10);
return view('users', compact('users'));
}
}
Langkah 7: Buat File Blade
di sini, kita perlu membuat file blade untuk users. jadi mari kita buat satu per satu file:
resources/views/users.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<h1>Laravel Display Online Users - Medikre.com</h1>
<table class="table table-bordered data-table">
<thead>
<tr>
<th>No</th>
<th>Name</th>
<th>Email</th>
<th>Last Seen</th>
<th>Status</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>
{{ Carbon\Carbon::parse($user->last_seen)->diffForHumans() }}
</td>
<td>
@if(Cache::has('user-is-online-' . $user->id))
<span class="text-success">Online</span>
@else
<span class="text-secondary">Offline</span>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endsection
Sekarang kita siap untuk menjalankan contoh kita dan login dengan user. jadi jalankan perintah di bawah ini jadi jalankan dengan cepat:
php artisan serve
Sekarang Anda dapat membuka URL di bawah ini di browser Anda:
localhost:8000/online-user
saya harap dapat membantu anda...
get user online laravel example mendapatkan user online pada laravel laravel