Schemă și migrări
Modelele Leto mapează tabele: un model descrie o tabelă existentă prin #[Table] și atributele de coloană, dar nu creează el însuși tabela. Deci trebuie să știi cum apare schema. Aceasta pagina explică cele trei căi și cine e responsabil de fiecare.
Maparea model-tabelă
Atributele unui model corespund 1-la-1 coloanelor din tabelă. Modelul declară ce se așteaptă să existe în baza de date:
#[Table('posts')]
class Post extends Model
{
#[PrimaryKey, AutoIncrement]
public int $id; // id INT(11)
#[Varchar(200)]
public string $title; // title VARCHAR(200)
#[Text]
public string $body; // body TEXT
}Dacă tipul din model nu se potrivește cu coloana reală, ORM-ul semnalează la serializare. Atributele descriu schema, nu o generează. Pentru lista completă a atributelor de stocare, vezi Tipuri de stocare.
Calea 1: creezi tabela din DDL
Dacă pornești de la model (sau vrei control explicit), creezi tabela o singură dată cu DDL-ul fluent din Query Builder:
db()->createTable('posts')
->column('id', 'INT(11)')
->column('title', 'VARCHAR(200)')
->column('body', 'TEXT')
->primaryKey('id')
->autoIncrement('id')
->execute();Pentru modificări ulterioare ai db()->alterTable('posts'). Coloanele din DDL trebuie să oglindească atributele modelului.
Calea 2: pornești de la o tabelă existentă
Dacă tabela există deja (creată prin SQL sau printr-un tool de migrare), pui doar #[Table] și atributele potrivite peste ea. Framework-ul poate și să inspecteze schema unei tabele existente (introspecție) pentru a construi descrierea modelului, ceea ce stă la baza generării de modele din baza de date.
Calea 3: sincronizare automată model ↔ tabelă
workleto-bt), nu de pachetul leto/framework în sine. Acolo găsești comenzile de migrare și generarea de modele din tabele. La nivel de framework ai maparea model-tabelă, DDL-ul manual și introspecția de mai sus.Ce folosești când
| Situație | Cale |
|---|---|
| Proiect nou, pornești de la modele | DDL manual (Calea 1), sau tooling-ul platformei (Calea 3) |
| Baza de date există deja | Pui atribute peste tabele (Calea 2) |
| Vrei migrări versionate și sync automat | Tooling-ul platformei Workleto (Calea 3) |