Slim4 Tutorial: 1 Database Eloquent tanpa Laravel

Slim4 Eloquent tanpa Laravel

Menggunakan package/library Eloquent database tanpa Laravel bisa diterapkan pada Slim4 untuk membuat fashion store API. Slim4 merupakan salah satu PHP micro framework, sedangkan Eloquent merupakan salah satu library object-relational mapper (ORM) pada Laravel. Slim4 dengan ukuran file yang kecil tidak memiliki library database bisa dipasangkan dengan Eloquent Laravel. ukuran file yang kecil, Slim4 juga dapat digunakan untuk membuat full-featured web app. Namun pada tutorial kali ini akan dibahas Slim4 sebagai PHP backend untuk membuat API. Pada artikel Slim4 Tutorial: 1 Database Eloquent tanpa Laravel akan dibahas bagaimana melakukan instalasi sampai dengan menggunakan Eloquent.

Instalasi Slim4

Instalasi Slim4 termasuk cukup sederhana, beberapa aplikasi yang diperlukan sebelum melakukan instalasi adalah apache2, php7.4 dan composer. Perintah yang digunakan untuk melakukan instalasi sebagai berikut:

mkdir fashion-store-slim4
cd fashion-store-slim4
composer require slim/slim:"4.*"
composer require slim/psr7

Struktur direktori setelah berhasil melakukan instalasi:

Slim4 struktur direktori Eloquent tanpa Laravel

Contoh nama database yang akan digunakan adalah fashion_store_db dengan nama tabel user. Contoh gambar tabel user sebagai berikut:

Table user Slim4 Eloquent tanpa Laravel

MySQL script untuk membuat tabel seperti diatas sebagai berikut:

CREATE TABLE IF NOT EXISTS `fashion_store_db`.`user` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `email` VARCHAR(100) NOT NULL,
  `password` VARCHAR(100) NULL,
  `name` VARCHAR(100) NULL,
  `level` INT NULL,
  `status` INT NULL,
  `created_at` DATETIME NULL,
  `updated_at` DATETIME NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `email_UNIQUE` (`email` ASC) VISIBLE)
ENGINE = InnoDB;

PHP Slim4 Tutorial: 1 Database Eloquent tanpa Laravel

Ada banyak pilihan packages yang bisa digunakan sebagai koneksi database pada Slim4, salah satunya adalah Eloquent milik Laravel. Eloquent sendiri bersifat standalone dimana package tersebut bisa digunakan tanpa harus menginstal Laravel secara keseluruhan. Menginstal Eloquent pada Slim4 bisa dilakukan dengan cara:

composer require illuminate/database:*

Setelah composer berhasil menginstal package yang dibutuhkan, selanjutnya buat file pada config/settings.php dan config/dependencies.php.

Settings Slim4 Eloquent tanpa Laravel

File settings.php akan digunakan untuk menyimpan pengaturan terkait aplikasi. Contoh code yang digunakan sebagai settings:

<?php

return [
    'db' => [
        'driver' => 'mysql',
        'host' => '127.0.0.1',
        'database' => 'database',
        'username' => 'username',
        'password' => 'password',
        'charset' => 'utf8',
        'collation' => 'utf8_general_ci',
    ]
];

Untuk bisa menggunakan Eloquent pada Slim4 diperlukan melakukan inisialisasi database terlebih dahulu. Inisialisasi akan dilakukan pada file config/dependencies.php.

<?php

$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($settings['db']);
$capsule->bootEloquent();
$capsule->setAsGlobal();

Setelah melakukan inisialisasi database, selanjutnya perlu menambahkan perintah untuk melakukan autoload App pada composer.json. Fungsi dari autoload App digunakan sebagai untuk menampung file-file yang dibutuhkan aplikasi, sebagai contoh pada tutorial ini adalah Models. File model yang akan digunakan akan diletakkan pada direktori src/Models. Tambahkan autoload pada composer.json sebagai berikut:

{
    ...
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Kemudian generate ulang file dengan perintah composer:

composer dump-autoload

Buat model User buat file pada src/Models/User.php

User model Slim4 Eloquent tanpa Laravel

Mengakses model User

Agar Eloquent database tanpa Laravel dapat digunakan pada Slim4, dimana model User bisa mengakses database secara langsung dan menggunakan sintak-sintak yang ada pada Eloquent milik Laravel, serta menurunkan fungsi-fungsi yang ada pada Eloquent bisa dilakukan dengan melakukan extends class dari anak ke induknya, sebagai contoh class Models User melakukan extends terhadap class Eloquent Model. Attribute $table digunakan untuk menandakan nama tabel yang digunakan oleh model tersebut.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $table = 'user';
    protected $primaryKey = 'id';
}

Langkah selanjutnya yaitu membuat akses route pada Slim4. Buat file public/index.php dan public/.htaccess dengan struktur direktori sebagai berikut:

Route Slim4 Eloquent tanpa Laravel

Sebelum mengakses route yang akan dipanggil, terlebih dahulu perlu mengaktifkan rewrite module pada apache2. Hal ini perlu dilakukan untuk menghilangkan nama file index.php pada route. Contoh mengaktifkan rewrite module dengan terminal:

a2enmod rewrite

Tambahkan kode pada .htaccess untuk melakukan rewrite terhadap file index.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Route yang digunakan untuk mengambil data user sebagai berikut:

<?php

use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
use App\Models\User;

require __DIR__ . '/../vendor/autoload.php';

$app = AppFactory::create();
$app->setBasePath('/fashion-store-slim4/public');

$settings = require __DIR__ . '/../config/settings.php';
require __DIR__ . '/../config/dependencies.php';

$app->get('/user', function (Request $request, Response $response) {
    $user = User::all();
    $data = json_encode($user);
    $response->getBody()->write($data);
    return $response
        ->withHeader('Content-Type', 'application/json')
        ->withStatus(200);
});

$app->run();

Uji coba bisa dilakukan dengan menggunakan aplikasi Postman dengan mengakses alamat localhost/fashion-store-slim4/public/user

Postman daftar user Slim4 Eloquent

Code lengkap dapat dilihat melalui Github. Daftar lengkap tutorial fashion store API bisa dilihat melalui link ini.

3 thoughts on “Slim4 Tutorial: 1 Database Eloquent tanpa Laravel

  1. Pingback: Slim4 Fashion Store API: 2 Register user dan validasi request – PerangkatLunakKu

  2. Pingback: Tutorial PHP Backend Slim4 - PerangkatLunakKu

  3. Pingback: Slim4 Tutorial API: 2 Validasi request - PerangkatLunakKu

Tinggalkan Balasan