Atribute pe clasă
Atributele de clasă se pun deasupra declarației modelului și configurează maparea la tabelă și comportamentul lui implicit: numele tabelei, conexiunea, cheia primară, valorile implicite la nivel de coloană și ordinea implicită a rezultatelor.
#[Table]
Leagă modelul de o tabelă din baza de date.
#[Table('users')]
class User extends Model
{
}#[ConnectionName]
Specifică o conexiune la baza de date diferită de cea implicită (default).
#[Table('orders')]
#[ConnectionName('warehouse')]
class Order extends Model
{
}Conexiunea warehouse trebuie definită în config/database.php:
return [
'default' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'app',
// ...
],
'warehouse' => [
'driver' => 'mysql',
'host' => '10.0.0.5',
'database' => 'warehouse',
// ...
],
];#[PrimaryKey]
Marchează cheia primară a tabelei.
#[PrimaryKey]
public int $id;#[AutoIncrement]
Indică faptul că cheia primară este auto-incrementată (nu se trimite la INSERT).
#[PrimaryKey]
#[AutoIncrement]
public int $id;#[DefaultOrder]
Definește ordonarea implicită pentru toate interogările pe acest model. Suportă atribute multiple și necesită enum-ul Order:
use Leto\Database\ORM\Enums\Order;
#[Table('products')]
#[DefaultOrder('name', Order::ASC)]
#[DefaultOrder('created_at', Order::DESC)]
class Product extends Model
{
}#[DefaultValue]
Definește o valoare implicită la nivel de coloană în baza de date (CREATE TABLE DEFAULT). Este DDL-only: nu afectează logica de inserție din PHP. Primește o valoare PHP literală: string, int, bool, etc.:
use Leto\Database\ORM\Attributes\DefaultValue;
#[DefaultValue('guest')]
public string $role;
#[DefaultValue(0)]
public int $login_count;
#[DefaultValue(true)]
public bool $active;#[DefaultExpression]
Definește o expresie SQL raw ca valoare implicită (DEFAULT <expresie>). Utilă pentru funcții native ale bazei de date (current_timestamp(), uuid(), etc.). Expresia este inserată direct în DDL, fără escaping sau ghilimele:
use Leto\Database\ORM\Attributes\DefaultExpression;
#[DefaultExpression("current_timestamp()")]
public string $created_at;
#[DefaultExpression("(uuid())")]
public string $id;Notă:
#[DefaultExpression]este echivalent cu unDEFAULT <expresie>raw în SQL. Ai grijă la portabilitate: expresiile diferă între MySQL, PostgreSQL etc.