Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Laravel 13 permette di dichiarare alcune configurazioni dei modelli Eloquent con attributi PHP, direttamente sopra la classe. Per esempio, puoi indicare il nome di una tabella non convenzionale con #[Table('my_flights')] o disabilitare i timestamp con #[WithoutTimestamps]. Non è però un addio generale alle proprietà: $attributes resta il modo documentato per definire i valori predefiniti del modello, e per rinominare le colonne timestamp Laravel continua a mostrare le costanti CREATED_AT e UPDATED_AT.

Cosa cambia con gli attributi PHP in Laravel 13

Laravel 13 estende l’uso degli attributi PHP per rendere alcune configurazioni più dichiarative e vicine alla classe o al metodo a cui si riferiscono. Nel caso di Eloquent, questo consente di esprimere sulla dichiarazione del modello impostazioni come tabella, chiave primaria, incremento, timestamp e formato delle date. La documentazione ufficiale descrive questi attributi come opzioni disponibili, non come sostituti universali delle proprietà e delle costanti già usate nei modelli: documentazione Eloquent 13.x.

La novità riguarda PHP attributes, cioè metadati scritti con la sintassi #[...]. Non vanno confusi con gli “attributi” di Eloquent, il termine che si usa anche per i valori del modello associati alle colonne del database.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Gli attributi PHP non sono esclusivi di Eloquent: le note di rilascio di Laravel 13 citano anche controller, autorizzazioni, code, eventi, notifiche, validazione, testing e serializzazione delle risorse. Laravel 13 è stato rilasciato il 17 marzo 2026 e richiede PHP 8.3; le note indicano compatibilità con PHP 8.3–8.5. Le date di supporto dichiarate dal progetto sono correzioni di bug fino al terzo trimestre 2027 e correzioni di sicurezza fino al 17 marzo 2028. Consulta le note di rilascio di Laravel 13 per eventuali aggiornamenti successivi.

Come impostare il nome di una tabella con #[Table]

Per convenzione, Eloquent ricava il nome della tabella dal nome della classe, usando la forma plurale in snake case. Quando il nome effettivo è diverso, puoi dichiararlo sulla classe con l’attributo Table:

<?php

use IlluminateDatabaseEloquentAttributesTable;
use IlluminateDatabaseEloquentModel;

#[Table('my_flights')]
class Flight extends Model
{
    // ...
}

In questo esempio, il modello Flight è associato alla tabella my_flights. L’attributo si colloca sopra la dichiarazione della classe, invece di esprimere questa configurazione nel corpo del modello.

Come dichiarare una chiave primaria non convenzionale

Eloquent presume una chiave primaria chiamata id, intera e incrementale. Se il modello usa una chiave diversa, puoi passare le opzioni a Table:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#[Table(key: 'uuid', keyType: 'string', incrementing: false)]
class Flight extends Model
{
    // ...
}

Qui la chiave primaria è uuid, il suo tipo è string e non viene incrementata. Se devi soltanto disabilitare l’incremento, la documentazione mostra anche l’attributo dedicato #[WithoutIncrementing]. Table espone inoltre opzioni per la gestione dei timestamp e il formato delle date; usa gli attributi per le opzioni documentate, senza presumere che ogni configurazione precedente abbia un equivalente.

Quali attributi dedicati sono documentati per i modelli

Quando serve una singola impostazione, puoi usare gli attributi specifici previsti da Eloquent. Per esempio, per disabilitare i timestamp del modello:

#[WithoutTimestamps]
class Flight extends Model
{
    // ...
}

Per indicare il formato delle date, la documentazione mostra #[DateFormat('U')]. In alternativa, Table può ricevere l’opzione dateFormat. La documentazione Eloquent 13.x descrive queste API e le relative opzioni: attributi Eloquent.

Quali proprietà e costanti restano utili

Valori predefiniti: $attributes

Per impostare valori predefiniti degli attributi del modello, Eloquent continua a documentare la proprietà $attributes. I valori vanno espressi nel formato grezzo memorizzabile nel database. Gli attributi PHP di configurazione non sostituiscono questa proprietà.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Nomi delle colonne timestamp: costanti

Se le colonne per la creazione e l’aggiornamento hanno nomi diversi da created_at e updated_at, gli esempi ufficiali continuano a usare le costanti CREATED_AT e UPDATED_AT. La disponibilità di attributi per altre impostazioni dei timestamp non significa che anche la rinomina di queste colonne si esprima necessariamente con un attributo.

Configurazione che dipende dall’istanza

Gli attributi mostrati dichiarano metadati statici sulla classe. Non sono un’indicazione che ogni proprietà possa essere convertita senza cambiare il comportamento: se un valore dipende dall’istanza o richiede logica, non presumere che un attributo statico sia equivalente.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Attributo PHP o proprietà del modello: quale scegliere

La scelta dipende da quale configurazione vuoi esprimere e da come è supportata da Eloquent. Gli attributi PHP collocano i metadati sulla dichiarazione della classe; una proprietà o una costante rimane visibile nel corpo del modello. Per le opzioni disponibili come Table, DateFormat e WithoutTimestamps, puoi scegliere la forma documentata che rende più chiara la configurazione nel tuo progetto. Per i valori predefiniti usa $attributes; per rinominare le colonne timestamp usa le costanti indicate dalla documentazione.

Non ci sono benchmark comparativi nelle fonti ufficiali citate, quindi non è possibile attribuire agli attributi un vantaggio di prestazioni rispetto a proprietà o costanti. Il vantaggio documentato e concreto è di organizzazione: alcune impostazioni possono essere dichiarate accanto alla classe o al metodo interessato.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Devi convertire i modelli per aggiornare a Laravel 13?

La documentazione disponibile non presenta questa novità come una migrazione automatica né richiede di convertire tutte le proprietà dei modelli. Puoi adottare gli attributi dove esiste un’opzione documentata e lasciare intatti i meccanismi che continuano a servire, come $attributes e le costanti dei timestamp.

Considera anche il requisito di versione: Laravel 13 richiede PHP 8.3 o successivo, con compatibilità dichiarata per PHP 8.3–8.5. Prima di aggiornare un’applicazione, verifica che l’ambiente PHP soddisfi il requisito e valuta le modifiche ai modelli in base alla configurazione effettivamente usata.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.