2017-11-08 2 views
0

Ich habe Modell Project die einige $appends und einige Beziehungen wie pages hat, brands, status usw.Get Daten ohne Appends und Beziehungen in Laravel von Eloquent

Und in $appends hat es pages und in Page Modell hat es viel von anderen $appends. Jetzt, während ich Project::find($id) mache, ruft es das Projekt, seine Seiten und andere Modelle ab, die zu Page gehören. Und ich habe nicht getan with, so dass für jede Seite viele Abfragen ausgelöst werden.

Ohne

DB::table('projects')->where('id', $id)->get(); 

mit Gibt es einen besseren Ansatz nur Projektmodell zu laden, keine Beziehung, keine Appends, nichts über Eloquent?

Antwort

0

Leider funktioniert das nicht wie es funktioniert. Wenn Sie entfernen möchten anhängt die Sie dies tun könnte wie folgt aussehen:

$project = Project::find(1); 
$project->setAppends([]); 

return $project; //no values will be appended 

jedoch, wenn diese Appends Datenbank Anrufe tun, und Sie lieber nicht, sollten Sie rexamine, ob es Sinn macht für die Appends zu sein Dort. Es kommt wirklich darauf an, ob man es für sinnvoll hält, die appends bis immer aufzunehmen oder nicht.

+0

Danke @Alex Ich habe das nur mit 'return $ this-> beantwortet (Project :: find ($ Id) -> setAppends ([]));'; –

+0

Ich habe das in meinem Modell versucht, aber nicht funktioniert, weiß nicht warum. http://prntscr.com/h7t9nt –

+0

wie in, machte es immer noch die Abfragen? –

0

Sie können die benutzerdefinierte Abfrage verwenden, um die Ergebnisse als wie zu bekommen:

DB :: Tabelle ('Benutzer als u') -> join ('state_history als sh', 'sh.user_id', ‚= ',' u.id ') -> wo (' u.id ',' = ', $ id) -> join (' Benutzer wie u1 ',' sh.team_id ',' = ',' u1.id ') -> wähle ('u.name', 'sh.state', 'sh.created_at', 'u1.name als tname') -> orderBy ('sh.created_at', 'desc') -> get() ;

Verwandte Themen