Salt la conținut

Modelul minimal

Un model Leto este o clasă PHP simplă care extinde Leto\Database\ORM\Model.

<?php

use Leto\Database\ORM\Attributes\Table;
use Leto\Database\ORM\Attributes\PrimaryKey;
use Leto\Database\ORM\Attributes\AutoIncrement;
use Leto\Database\ORM\Attributes\DataStorage\Varchar;
use Leto\Database\ORM\Attributes\DataStorage\Integer;
use Leto\Database\ORM\Attributes\DataStorage\DateTime;
use Leto\Database\ORM\Model;

#[Table('users')]
class User extends Model
{
    #[PrimaryKey]
    #[AutoIncrement]
    public int $id;

    #[Varchar(100)]
    public string $name;

    #[Varchar(255)]
    public string $email;

    #[Integer]
    public int $role_id;

    #[DateTime]
    public \DateTimeImmutable $created_at;
}

Utilizare de bază

// Creare
$user = new User();
$user->name = 'Ion Popescu';
$user->email = 'ion@example.com';
$user->role_id = 1;
$user->create();    // salvează în baza de date

// Găsire după ID
$user = User::find(1);

// Interogare
$users = User::where('role_id', 1)
    ->orderBy('name')
    ->get();

// Actualizare
$user->name = 'Ion Ionescu';
$user->update();

// Ștergere
$user->delete();
Atenție! Atributele PHP la nivel de clasă (#[Table], #[ConnectionName]) NU se moștenesc: fiecare subclasă de Model trebuie să-și declare propriile #[Table] și #[ConnectionName]. În schimb, atributele de pe proprietăți (#[PrimaryKey], #[AutoIncrement], atributele de stocare și relații) sunt vizibile prin moștenire: dacă o clasă părinte declară #[PrimaryKey, AutoIncrement] public int $id;, subclasele nu trebuie să-l re-declare.

Valori implicite pentru coloane

Pentru valori implicite la nivel de coloană (DEFAULT în schema bazei de date) ai atributele #[DefaultValue] și #[DefaultExpression]. Vezi Atribute pe clasă pentru detalii și exemple.