Vai al contenuto
DedicatedPHP Contatto

Gestione del database con Eloquent ORM in Laravel

Impara come utilizzare l'ORM di Laravel per connetterti ai database.

ORM eloquente

La gestione dei database è un aspetto essenziale di qualsiasi applicazione web. Laravel, un popolare framework PHP, semplifica questo compito grazie a Eloquent ORM (Object-Relational Mapping). Eloquent è un modo efficiente ed elegante per interagire con i database utilizzando oggetti e relazioni anziché scrivere direttamente query SQL.

Che cos'è un ORM?

ORM è l'acronimo di "Object-Relational Mapping" o "Object-Relational Mapping". Si tratta di una tecnica di programmazione utilizzata per convertire i dati tra il sistema di tipi utilizzato in un linguaggio di programmazione orientato agli oggetti e il sistema di tipi utilizzato in un database relazionale.

In termini più semplici, un ORM è un modo per interagire con il database, proprio come se fosse un database orientato agli oggetti.

Vantaggi dell'utilizzo di un ORM

Ecco alcuni vantaggi derivanti dall'utilizzo di un ORM nello sviluppo di software:

  • Estrazione dal database Gli ORM consentono agli sviluppatori di scrivere query utilizzando il linguaggio di programmazione con cui stanno lavorando, anziché SQL o altri linguaggi di interrogazione di database. Ciò significa che è possibile concentrarsi sulla scrittura del codice in un linguaggio già conosciuto, aumentando così la produttività.
  • Indipendenza del sistema di database Con un ORM, il codice che scrivi può essere indipendente dal sistema di database sottostante. Ciò significa che puoi passare a un sistema di database diverso con modifiche minime al codice.
  • Sviluppo più rapido – Gli ORM spesso includono numerose funzionalità integrate, come la gestione delle query, le transazioni, le migrazioni, i seed e altro ancora. Queste funzionalità possono aiutarti a sviluppare più velocemente, evitandoti di dover scrivere manualmente questo codice.
  • Sicurezza Gli ORM spesso includono protezioni integrate contro i comuni attacchi ai database, come l'SQL injection. Questo può rendere la tua applicazione più sicura.
  • Integrazione con codice orientato agli oggetti Poiché gli ORM consentono di interagire con i dati come oggetti, è possibile sfruttare tutta la potenza della programmazione orientata agli oggetti, come l'ereditarietà, l'incapsulamento, il polimorfismo, ecc.
  • Manutenibilità Il codice è generalmente più facile da leggere e comprendere, il che può semplificare notevolmente la manutenzione e l'aggiornamento dell'app.

È importante notare che, sebbene gli ORM offrano molti vantaggi, possono anche presentare degli svantaggi, come un sovraccarico aggiuntivo e, in alcuni casi, la perdita di controllo sulle query del database. Tuttavia, per molte applicazioni, i vantaggi derivanti dall'utilizzo di un ORM superano di gran lunga questi svantaggi.

Che cos'è Eloquent ORM?

Eloquent ORM è una tecnica che permette di interagire con i database in Laravel come se fossero oggetti PHP. ORM sta per "Object-Relational Mapping" ed è un paradigma di programmazione che converte i dati tra sistemi incompatibili utilizzando gli "oggetti". Questa tecnica semplifica la manipolazione dei dati e riduce la necessità di scrivere codice SQL.

Configurazione eloquente

Per iniziare a usare Eloquent, dovremo definire i modelli. In Laravel, ogni tabella del database ha un "Modello" corrispondente che viene utilizzato per interagire con quella tabella.

Un modello Eloquent è semplicemente una classe PHP che si trova di default nella directory app/. Per creare un nuovo modello, puoi usare il comando artisan make:model. Ad esempio, per una tabella utenti, puoi creare un modello User con il seguente comando:

php artisan make:model User

Questo creerà una nuova classe modello in app/Models/User.php.

CRUD (Create, Read, Update, Delete) con Eloquent

Con Eloquent, le operazioni CRUD (Create, Read, Update, Delete) sono semplici.

creare

Per creare un nuovo record nel database, è sufficiente creare una nuova istanza del modello, impostarne gli attributi e quindi chiamare il metodo save.

$utente = nuovo utente;
$user->name = 'John Doe';
$user->email = 'john@example.com';
$user->password = Hash::make('password');
$user->save();

Leggere

Per leggere i dati, è possibile utilizzare diversi metodi disponibili in Eloquent. Ad esempio, per ottenere tutti gli utenti, è possibile procedere come segue:

$users = User::all();

Aggiornare un record è semplice come modificare alcuni attributi e quindi richiamare il metodo save.

$utente = Utente::trova(1);
$user->email = 'new-email@example.com';
$user->save();

eliminare

Infine, per eliminare un record, è necessario chiamare il metodo delete.

$utente = Utente::trova(1);
$user->delete();

Relazioni con Eloquente

Eloquent semplifica anche la definizione e la gestione delle relazioni tra tabelle, come "uno a uno", "uno a molti", "molti a molti", "ha uno attraverso", "ha molti attraverso" e "molti a molti".

Ad esempio, se un Utente ha molti Post, è possibile definire questa relazione nel modello Utente come segue:

funzione pubblica post()
{
restituisci $this->hasMany('App\Models\Post');
}

Successivamente, puoi accedere a tutti i post di un utente nel modo seguente:

$utente = Utente::trova(1);
$posts = $user->posts;

In sintesi, Eloquent ORM in Laravel offre un'interfaccia intuitiva e flessibile per gestire l'interazione con i database. Il suo approccio orientato agli oggetti e l'ampia gamma di funzionalità rendono la gestione del database molto più gestibile e meno soggetto a errori.

Query avanzate

Oltre alle operazioni CRUD di base, Eloquent offre un gran numero di metodi per eseguire query più complesse. Ad esempio, se voleste ottenere tutti gli utenti con più di 100 post, potreste farlo in questo modo:

$users = User::has('posts', '>', 100)->get();

Oppure, se voleste ottenere tutti i post di un utente creati nell'ultimo mese, potreste farlo in questo modo:

$recentPosts = $user->posts()->where('created_at', '>', Carbon::now()->subMonth())->get();

funzioni complesse

Giuntura

Per eseguire un'operazione di join, è possibile utilizzare il metodo `join` nel costruttore di query di Eloquent. Ad esempio, se si desidera ottenere tutti gli utenti insieme ai dettagli dei loro post, è possibile farlo in questo modo:

$users = DB::table('users')
->join('posts', 'users.id', '=', 'posts.user_id')
->seleziona('utenti.*', 'post.description')
->get();

Qui, uniamo le tabelle 'users' e 'posts' dove l''id' della tabella 'users' corrisponde all''user_id' della tabella 'posts'.

Unione

Per combinare i risultati di più query in un unico set di risultati, è possibile utilizzare il metodo UNION. Ad esempio, se si desidera ottenere tutti i post pubblicati oggi o che hanno almeno 10 Mi piace, è possibile procedere in questo modo:

$first = DB::table('posts')
->dove('creato_a', '=', Carbon::oggi());

$posts = DB::table('posts')
->dove('piace', '>=', 10)
->unione($first)
->get();

Raggruppa per

Il metodo groupBy consente di raggruppare i risultati della query in base a una o più colonne. Ad esempio, se si desidera ottenere il numero di post creati da ciascun utente, è possibile procedere in questo modo:

$users = DB::table('posts')
->seleziona('user_id', DB::raw('count(*) as total_posts'))
->raggruppaPer('user_id')
->get();

Avendo

Il metodo HAVING consente di filtrare i risultati della query in base a una condizione SQL "HAVING". Ad esempio, se si desidera ottenere solo gli utenti che hanno creato più di 10 post, è possibile farlo in questo modo:

$users = DB::table('posts')
->seleziona('user_id', DB::raw('count(*) as total_posts'))
->raggruppaPer('user_id')
->avente('total_posts', '>', 10)
->get();

Ricorda che queste sono solo le operazioni di base che puoi eseguire con Eloquent. Laravel offre molte funzionalità aggiuntive che possono aiutarti a creare query più complesse e potenti.

Mutatori e accessori

Eloquent offre anche funzionalità per mutatori e accessor, che consentono di definire come gli attributi di un modello devono essere manipolati quando vengono impostati o ottenuti. Ad esempio, se si desidera garantire che tutti gli indirizzi email degli utenti siano in minuscolo, è possibile definire un mutatore sul modello User come segue:

funzione pubblica setEmailAttribute($value)
{
$this->attributes['email'] = strtolower($value);
}

Conclusione

Eloquent ORM è uno strumento potente e flessibile per la gestione dei database in Laravel. Il suo approccio orientato agli oggetti e l'ampia gamma di funzionalità rendono la gestione dei database molto più semplice e piacevole. Imparando a usare Eloquent, potrai migliorare notevolmente la tua efficienza e produttività come sviluppatore Laravel.

Vuoi applicare queste idee al tuo progetto?Parliamo della tua piattaforma PHP.
Visualizza il servizio correlato