laravel eloquent

Come usare gli scopes di Eloquent

Gli scopes di Eloquent costituiscono una risorsa utile per evitare la duplicazione del codice.

Uno scope non è altro che un vincolo, un metodo che quando invocato applica un filtro predefinito alla query. Vediamo un esempio preso direttamente dalla documentazione ufficiale di Laravel.

I metodi che definiscono lo scope hanno sempre come prefisso la parola scope seguita dal nome che si vuole assegnare. Il nome del metodo deve essere in camel case.

Per utilizzare lo scope si dovrà richiamare il nome del metodo privo del prefisso scope, come mostrato di seguito:

Ovviamente il parametro $query non deve essere considerato, sarà Eloquent a occuparsi di passare l’argomento. E’ possibile però creare degli scope dinamici, cioè passare allo scope uno o più argomenti per adattare la condizione al contesto in cui deve essere usata.

Se prendiamo come esempio scopePopular() dello snippet precedente, vediamo come dinamizzare il numero di voti.

Global scopes

E’ possibile definire vincoli da applicare su tutte le query di un model. Per far questo è necessario creare un global scope e utilizzarlo nel model.

Definizione di un global scope:

Dopo aver creato la classe dello scope, possiamo applicarla al model sovrascrivendo il metodo boot() come mostrato nell’esempio di seguito:

In questo esempio tutte le query eseguite verranno applicate ai record il cui campo age ha un valore superiore a 200.

Pagina della documentazione

Scopri i Corsi in aula Laravel di LaraMind! E’ in partenza su Roma il Corso in aula di 26 ore il 29 Giugno 2017, visita la scheda del corso e scarica il programma!

Leave a reply