Databaza

Në Laravel mund të përdoren mënyra të ndryshme të ndërveprimit me sistemin relacional të databazave, por ajo që zë vend të theksuar është Eloquent, ActiveRecord ORM i Laravelit.

Eloquent bazohet në një logjikë të thjeshtë: për çdo tabelë duhet të krijohet nga një PHP klasë, e quajtur model. Veprimet siç janë: leximi, shtimi, ndryshimi dhe fshirja më tej kryhen duke iu referuar këtyre klasave, pa pasur nevojë për të ndërtuar SQL query. Veç kësaj, Eloquent mundëson definimin e aksesorëve, mutatorëve, attribute casting dhe relacioneve.

Konfigurimi

Konfigurimi i databazës bëhet në config/database.php. Brenda vargut të konfigurimit, mund të definohen 4 koneksione të ndryshme, respektivisht 4 sisteme për menaxhimin e databazave:

  • sqlite
  • mysql
  • pgsql
  • sqlsrv
'connections' => [
    'sqlite' => [
        'driver' => 'sqlite',
        'database' => env('DB_DATABASE', database_path('database.sqlite')),
        'prefix' => '',
    ],

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

    'pgsql' => [
        'driver' => 'pgsql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '5432'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'prefix' => '',
        'schema' => 'public',
        'sslmode' => 'prefer',
    ],

    'sqlsrv' => [
        'driver' => 'sqlsrv',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '1433'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'prefix' => '',
    ],

],

.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=akademia
DB_USERNAME=admin
DB_PASSWORD=Vsdfg8$dUU

Vlerat për: connection, host, port, database, username, password, unix_socket, fillimisht kërkohen në fajllin .env, dhe nëse atje nuk gjenden, lexohet vlera e dytë. Për shembull nëse nuk ekziston fajlli .env apo nuk ekziston rreshti DB_DATABASE në fajllin .env, funksioni env()merr vlerën 'forge' si emër të databazës, e nëse ekziston, merret vlera 'akademia' siç është shënuar në shembullin e .env fajllit.

    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,

Në secilin nga koneksionet i definojmë parametrat e kërkuara për konektim me sistemin përkatës të databazave. Secili nga koneksionet mund të përdoret brenda aplikacionit.