Problema
ha
, con
E dove ha
a volte può essere confuso per gli sviluppatori per principianti. Diamo qualche prospettiva su cosa significhi ciascuno di questi
Soluzione
con()
è generalmente usato con carico desideroso, che è un modo rapido per tirare i modelli correlati. Fondamentalmente, significa che, insieme al modello principale, Laravel precaricherà le relazioni elencate. Questo è vantaggioso quando è necessario caricare ulteriori dati e si desidera evitare di fare N+1
DB cattive pratiche. Con un caricamento desideroso, si esegue solo una query DB aggiuntiva anziché potenzialmente centinaia di domande aggiuntive.
Esempio:
Utente> Hasmany> OrganizzazioneHa
ha()
viene utilizzato per filtrare il modello di selezione in base alla relazione selezionata. È fondamentalmente un metodo dove per le relazioni. Se usi semplicemente ha ("organizzazione")
, Usando lo stesso esempio di utenti e organizzazioni, significherebbe che attirerà tutti gli utenti che hanno almeno un'organizzazione nel loro "portafoglio".
Esempio:
Utente> Hasmany> OrganizzazioneDove ha
Wherehas ()
è quasi lo stesso di ha()
. Ti consente solo di specificare i filtri aggiuntivi per il controllo del modello correlato.
Esempio:
Utente> Hasmany> Organizzazione