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ą:
DB struktūra
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.

Paskutinį kartą puslapis keistas 2023-05-10

© Joana Katina 2016-2024. Visos teisės saugomos