Mysql
 sql >> Database >  >> RDS >> Mysql

Laravel Eloquent vs Query Builder - Perché usare eloquent per ridurre le prestazioni

Eloquent è l'implementazione di Laravel del modello Active Record e viene fornito con tutti i suoi punti di forza e di debolezza.

Active Record è una buona soluzione per elaborare una singola entità in modalità CRUD, ovvero creare una nuova entità con proprietà riempite e quindi salvarla in un database, caricare un record da un database o eliminarla.

Beneficerai molto delle funzionalità di Eloquent come il controllo sporco (per inviare AGGIORNAMENTO SQL solo per i campi che sono stati modificati), eventi modello (ad esempio per inviare avvisi amministrativi o aggiornare i contatori delle statistiche quando qualcuno ha creato un nuovo account), tratti ( timestamp, eliminazioni graduali, tratti personalizzati) caricamento ansioso/lazy ecc. È inoltre possibile applicare pattern basati sul dominio e implementare alcuni elementi di logica aziendale nelle entità di Active Record, ad esempio la convalida, la gestione delle relazioni, i calcoli, ecc.

Ma, come già sai, Active Record ha un prezzo per le prestazioni.

Quando elabori un singolo record o alcuni record, non c'è nulla di cui preoccuparsi. Ma per i casi in cui leggi molti record (ad es. per datagrid, per report, per elaborazione batch ecc.) il semplice DB di Laravel metodi è un approccio migliore.

Per le nostre applicazioni basate su Laravel stiamo utilizzando entrambi gli approcci come riteniamo appropriati. Usiamo Eloquent di Laravel per i moduli dell'interfaccia utente per elaborare un singolo record e utilizzare DB metodi (supportati da viste SQL con ulteriori modifiche alle prestazioni specifiche del motore di database) per recuperare dati per tabelle dell'interfaccia utente, attività di esportazione ecc. Funziona bene anche con le API RESTful - Eloquent per GET, PUT, POST, DELETE con una chiave e DB per GET senza chiave ma con filtri e ordinamento e paging.