2017-05-02 1 views
2

Ich bin neu in Laravel 5.4 und arbeite an einigen Abfrage-Manipulation. Jetzt habe ich eine Abfrage mit Query Builder erstellt, die unten gezeigt wird:Wie man eifriges Laden mit benutzerdefiniertem Abfrage-Generator in Laravel verwendet

$view = DB::table('blocks') 
    ->leftjoin('programmes', 'blocks.programme_id', '=', 'programmes.id') 
    ->select('blocks.id', 'blocks.programme_id', 'blocks.name', 'blocks.colour', 'blocks.year', 'programmes.title AS programme'); 

Ich habe zwei weitere Tabelle „Termine“ und „Module“. Jedes Datum sowie Modul gehört zu Blöcken.

Jetzt möchte ich alle Blöcke mit Programmen, Daten und Modulen holen. Ich weiß, ich kann mit() -Methode verwenden, um all diese zu bekommen. Aber nach meinem Wissen über Laravel kann ich mit der Methode with() nur dann arbeiten, wenn ich eine Modelldatei für jede Tabelle habe und eine Beziehung zwischen ihnen habe.

Aber nicht Modell verwenden und Beziehung zwischen ihnen definieren möchten. Ich möchte nur wissen Wie kann ich Blockdaten mit Programmen, Daten und Modulen erhalten, ohne ein Modell zu erstellen und eine Beziehung zwischen ihnen im Modell zu definieren? Gibt es eine andere Möglichkeit, mit() -Methode ohne Modell zu arbeiten?

Blockdaten und Module sind bedingt, irgendwann will ich nicht Daten dieser Tabelle mit Block erhalten.

Bitte helfen Sie mir dabei.

Antwort

1

Sie können es nicht automatisch tun. Eager lädt nur für Eloquent-Modell, so dass Sie es nicht mit Abfrage-Generator verwenden können. In den meisten Fällen können Sie Eloquent jedoch auch verwenden, um komplexere Abfragen zu erhalten (Sie können auch Joins verwenden, wenn Sie Eloquent verwenden), sodass Sie das Eager-Laden verwenden können.

Aber wenn Sie Eloquent überhaupt nicht verwenden möchten, müssen Sie natürlich einige benutzerdefinierte Mechanismen für das eifrige Laden erstellen.

Verwandte Themen