Laravel 13.x — Session

Pada dasarnya, aplikasi berbasis HTTP bersifat stateless. Ia tidak tahu apakah user sudah login atau belum, kecuali jika informasi status login tersebut disimpan (menggunakan session).

Laravel mendukung beberapa session driver (seperti Memcached, Redis, dan database) yang kesemuanya bisa diakses menggunakan API yg sama (menggunakan perintah PHP yang sama).

Session driver

Daftar session driver yang didukung:

Sebelum menggunakan database session driver, pastikan sudah ada tabel session. Ini biasanya sudah disertakan ketika menjalankan migration 0001_01_01_000000_create_users_table.php. Andaikata belum ada tabel tersebut, gunakan perintah Artisan php artisan make:session-table untuk membuatnya.

Sebelum menggunakan redis session driver, pastikan PHP extension PhpRedis sudah diinstall melalui PECL, atau bisa menggunakan package Composer predis/predis.

Menggunakan Session

Mengambil data session

Ada 2 cara:

Menggunakan Request instance di controller

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\View\View;

class UserController extends Controller
{
    /**
     * Show the profile for the given user.
     */
    public function show(Request $request, string $id): View
    {
        $value = $request->session()->get('key');

        // ...

        $user = $this->users->find($id);

        return view('user.profile', ['user' => $user]);
    }
}

Menggunakan global session helper

Route::get('/home', function () {
    // Retrieve a piece of data from the session...
    $value = session('key');

    // Specifying a default value...
    $value = session('key', 'default');

    // Store a piece of data in the session...
    session(['key' => 'value']);
});
Perhatian

Bila helper session dipanggil dengan nilai parameter berupa array, ia akan menyimpan nilai ke dalam session (array key sebagai key, array value sebagai nilai data session); bukan untuk mengambil data session.

session(['key' => 'value']);

Memberikan default value

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {
    return 'default';
});

Perintah Artisan

Membuat tabel session apabila belum ada

php artisan make:session-table

BelajarDev merupakan bagian dari eksperimen Muhammad Ikhsan di Smartech Studios.