Laravel 10.x pamoka. Modeliai
Kadangi Laravel yra paremtas MVC (Model-View-Controller) architektūros principu, tai pradėsim kurti sistemą nuo modelių.
Modeliai yra atsakingi už duomenų valdymą, t. y. juose yra aprašomi ryšiai tarp duomenų bazės lentelių ir kt. Darbui su duomenimis Laravel karkasas turi Eloquent ORM komponentą.
Čia dar kartą pateikiu kuriamos sistemos DB struktūrą:

Kiekvienam objektui (lentelei) sukursime po Eloquent modelį:
Objektui
Dabar kiekvienam modeliui reikia nurodyti kokią lentelę jis naudoja (kintamasis
Daugiau apie modelius skaitykite oficialioje Laravel 10.x dokumentacijoje, skiltyje Eloquent: Getting Started.
Modeliai yra atsakingi už duomenų valdymą, t. y. juose yra aprašomi ryšiai tarp duomenų bazės lentelių ir kt. Darbui su duomenimis Laravel karkasas turi Eloquent ORM komponentą.
Čia dar kartą pateikiu kuriamos sistemos DB struktūrą:

Kiekvienam objektui (lentelei) sukursime po Eloquent modelį:
php artisan make:model Author
php artisan make:model Book
php artisan make:model Category
php artisan make:model Country
php artisan make:model Order
php artisan make:model Publisher
Visi modeliai atsiranda ../library/app/Models/
kataloge.Objektui
User
modelio nekursime, nes jis buvo automatiškai sukurtas kai darėme autorizaciją (žr. ../library/app/Models/User.php
).Dabar kiekvienam modeliui reikia nurodyti kokią lentelę jis naudoja (kintamasis
$table
) ir su kokiais lentelių laukais dirbsime (kintamasis $fillable
). Kintamųjų $table
ir $fillable
pavadinimų nekeiskite, nes tai yra standartiniai Laravel kintamieji, juos pakeitus jūsų kuriama sistema neveiks. Atsidarykite visus modelius ir atitinkamai kiekvieno modelio klases papildykite šiais kodais:
class Author extends Model
{
...
protected $table = 'authors';
protected $fillable = ['first_name', 'middle_name', 'last_name', 'gender', 'country_id'];
}
class Book extends Model
{
...
protected $table = 'books';
protected $fillable = ['title', 'description', 'isbn', 'year', 'pages', 'quantity', 'price', 'cover', 'publisher_id', 'category_id'];
}
class Category extends Model
{
...
protected $table = 'categories';
protected $fillable = ['title'];
}
class Country extends Model
{
...
protected $table = 'countries';
protected $fillable = ['country', 'latitude', 'longitude', 'name'];
}
class Order extends Model
{
...
protected $table = 'orders';
protected $fillable = ['book_id', 'user_id', 'taken', 'returned'];
}
class Publisher extends Model
{
...
protected $table = 'publishers';
protected $fillable = ['title', 'website', 'phone'];
}
PASTABA. Jei neaprašysite kintamųjų $fillable
kiekvienam modeliui, tai negalėsite įrašyti duomenų į lenteles.Daugiau apie modelius skaitykite oficialioje Laravel 10.x dokumentacijoje, skiltyje Eloquent: Getting Started.