Verwenden von Verbindungen an Laravel eloquent -Fragen zur besseren Leistung

Verwenden von Verbindungen an Laravel eloquent -Fragen zur besseren Leistung
Meistens sehe ich Leute, die viele Fehler machen, wenn ich mit einer Datenbank interagiere, und viele Anfänger achten nicht wirklich darauf, wie viele Anrufe die Made nennen. Und das ist am Anfang in Ordnung. Vor allem, wenn Ihre Bewerbung klein ist und Sie immer noch lernen.

Darüber hinaus denke ich auch, dass Sie in den frühen Tagen der Laravel -Anwendung darauf konzentrieren sollten, die Funktionen und die Codierung zu erstellen. Sobald Sie Probleme mit dem Eingehen von Problemen haben und tatsächlich feststellen, dass Ihre Bewerbung langsam ist, sollten Sie sich nur untersuchen, was Sie tun können, um Ihre MySQL -Abfragen zu optimieren.

99% der Fälle verwenden Sie eloquente Methoden, um Datenbankanrufe zu tätigen, und manchmal stellt sich heraus.

Orm wie eloquent ist einfach fantastisch und wird dich bis zum Ende unterstützen.

Stellen Sie sich nun vor, Sie haben Ihre Bewerbung schon seit einiger Zeit aufgebaut und möchten einige Ihrer Anrufe umarbeiten, um sie etwas schneller zu gestalten. Lassen Sie uns ein Beispiel dafür durchgehen, wie Sie sich an Fragen anschließen können, um das gleiche Ergebnis in kürzerer Zeit zu erzielen.

Problem

Betrachten Sie unten einen Beispielcode, der das verwendet Benutzer Und Organisation Tabelle, um den Benutzernamen zurückzugeben.

$ user = user :: find ($ user_id);
$ organisation = organisation :: where ('id', $ user-> organisation_id)-> pluck ('name')-> first ();

Das obige Codebeispiel ist einfach genug zu verstehen, verwendet jedoch zwei separate Aufrufe in die Datenbank. Der zweite Anruf ist offensichtlich für den ersten zuverlässig. Daher müssen wir warten, bis der erste fertig ist, bevor wir zum nächsten kommen können.

Lösung

Lassen Sie uns dieses Code -Beispiel verbessern, indem Sie beide Anforderungen in eine einzige Abfrage kombinieren.

$ user_with_organization = user :: where ('id', $ user_id)
-> LeftJoin ('Organisationen', 'Benutzer.organisation_id ',' = ',' organisationen.Ausweis')
-> Select ('Benutzer.ID ',' Organisationen.Name ')-> first ();

Nun, was wir gerade oben getan haben?
1. Erstens zielen wir auf den Benutzer basierend auf dem $ user_id, Genau die gleiche Frage wie die erste.
2. Als nächstes schließen wir uns den Ergebnissen mit der Organisationen -Tabelle mit der Tabelle der Benutzer an, die die linke Join -Abfrage füllt
3. Die erste Abfrage hat sich das Benutzermodell ergriffen, das uns den Zugriff auf die ermöglicht organisation_id Attribut.
4. Wir wählen die Benutzer -ID und den Organisationsnamen aus.
5. Schließlich verwenden wir die First () -Methode, die sicherstellt.

Wie links Join funktioniert

Wenn Sie zwei Abfragen haben und den zweiten beimachen möchten, bedeutet dies, dass Ihr Endergebnis das Ergebnis Ihrer ersten Abfrage ist, bei der einige der Ergebnisse möglicherweise eine gewisse Übereinstimmung mit der zweiten Abfrage erhalten und einige zusätzliche Daten mit haben ihnen.

Das ist es. Jetzt haben Sie ein besseres Verständnis dafür. Verwenden Sie es, um Abfragen zu kombinieren, die sich darauf beziehen, eine einzige Anforderung an die Datenbank zu stellen. Es sieht ziemlich einfach aus, aber die Verwendung der gleichen Methode kann Ihnen helfen, die komplexesten Abfragen zu optimieren, die sich mit mehreren Tabellen befassen.

Wenn Sie Kommentare oder Vorschläge haben, können Sie mich gerne kontaktieren.