2014-06-17 22 views
9

Questa potrebbe sembrare una domanda ovvia, ma voglio solo ottenere un po 'di rassicurazione.Laravel eager caricamento vs join esplicito

Utilizzando la funzionalità di caricamento avido di Laravel, da quello che ho capito creerà due query per restituire un intero elenco di risultati correlati (diciamo se si sta lavorando con due tabelle). Tuttavia, e correggimi se sbaglio, l'utilizzo di una dichiarazione di join ti lascerà solo con una query, che crea un viaggio di andata e ritorno nel database del server (MySQL) ed è una query più efficiente.

So che è possibile scrivere query di join in Laravel, il che è ottimo, quindi la domanda è: sono errato ritenere che quando si recuperano i dati correlati da due o più tabelle, non dovrei preoccuparmi di caricare ansioso e invece solo scrivere le mie dichiarazioni di join?

****** Modifica *******

Tornando a questo un anno più tardi, direi a mio parere personale, basta scrivere le query, crudo, e scrivere bene .

risposta

9

Hai assolutamente ragione riguardo alla tua comprensione. Se si scrive una dichiarazione join per unire due o più tabelle utilizzando join() in Laravel, allora viene eseguita una sola query in cui l'utilizzo di un modello eager loading richiede più di una query utilizzando il modello.

non dovrei perdere tempo con eager loading e invece solo scrivere il mio unirsi dichiarazioni

In realtà, il eager loading è una tecnica per caricare modelli relativi utilizzando Eloquent ORM facilmente e utilizza Query Builder dietro la scena e ti permette di usare Eloquent Model Object senza fare la query da te stesso e rappresenta i dati in modo diverso, Usando Eloquent ORM sei in grado di interagire direttamente con il modello che rappresenta gli oggetti nel database con funzionalità aggiuntive. Ancora più importante, nasconde la complessità di SQL e consente di eseguire la query del database in modalità OOP utilizzando il codice PHP.

Ma quando si chiama manualmente join metodo che appartiene alla classe Illuminate\Database\Query\Builder poi si utilizza il Query Builder direttamente che richiede si scrive più codice e richiede più conoscenze di sql query perché non nasconde la query da voi, ma ti aiuta a fare domande più precisamente, ma fai ancora delle domande.

Entrambe sono cose diverse e funzionano in modo diverso. Puoi cercare su Google usando il termine ORM vs Query Builder.

+1

Grazie per l'intuizione! Farò un po 'più di ricerche in merito. – Meowts

Problemi correlati