2016-08-08 65 views
4

Jetzt können Sie mich knallen, wenn ich die Frage zu spezifisch stelle, sagen Laravel, aber ich frage mich, was ist die effizienteste Art der Verknüpfung von 2 Datensätzen mit die Werkzeuge in Laravel.effizienteste Methode der Verkettung von 2 Datensätzen in Laravel

Gibt es eine bestimmte Denkweise, die ich verwenden sollte, wenn Sie zwischen eloquenten Beziehungen und Joins mit dem Abfragegenerator wählen? Oder irgendwelche Nachteile bei der Verwendung von Abfrage-Generator für kleinere oder größere Datensätze, die ich berücksichtigen sollte?

Ich baue ein Ticketsystem, das nur ein oder zwei Felder aus der Benutzertabelle benötigt und es scheint sehr übertrieben zu sein, an dieser Stelle eine Beziehung zu verwenden, aber wenn die Anforderungen des Systems steigen, könnte es dazu führen zu unordentlichem Code. Ist das die Situation, die die Beziehungen lösen sollen?

Gibt es irgendeine Art von Kopplung, die passiert, wenn eloquente Beziehungen verwendet werden, die ich beachten sollte?

Wenn ich wirklich nicht klar bin, wie ich die Frage stelle, werde ich versuchen, es neu zu formulieren.

Antwort

1

Ich denke, Sie werden feststellen, dass ich mit der Einrichtung einiger einfacher Beziehungsmethoden in Ihrem Eloquent-Modell die Macht (und damit die Einfachheit und Einfachheit) von Eloquent entfesselt habe. Zum Beispiel würden Sie lieber schreiben benutzerdefinierten Code beitreten oder eine Struktur wie folgt verwenden:

foreach($user->tickets as $ticket) { ... etc ... } 

Es klingt wie Sie zu Laravel sehr neu sind. Ich empfehle dringend, die Seiten über Beziehungen in der Laravel manual zu lesen. Es gibt viele großartige Beispiele. Außerdem gibt es ein Laracast Video Tutorial über Beziehungen here. Ich habe keine Verbindung zu dieser Website.

Ticket Klasse:

<?php 
class Ticket extends Model { 
    public function user() { 
     return $this->belongsTo('User'); 
    } 
} 

Benutzerklasse:

<?php 
class User extends Model { 
    public function tickets() { 
     return $this->hasMany('Ticket'); 
    } 
} 

so lange, wie Sie einen Tabellen-Setup haben wie so:

tickets (table) 
- id 
- user_id 

users (table) 
- id 

Dieses Beispiel nimmt die Modelle in der sind globaler Namespace. Dann können Sie Benutzerdaten von einem Ticket greifen etwa so:

$ticket->user->first_name 
$ticket->user->last_name 
+0

ich schnell hinzufügen, dass ich die Informationen gelesen habe auf eloquent und seine Anwendungen zu einem ziemlich großen extent.I total Ihren Punkt sehen und ich denke, dass ich immer Ich wusste, dass es einen möglichen Vorteil gibt. Aber sicherlich gibt es auch einen Nachteil? Das Beispiel, das in meinem Fall verwendet wird, ist so, dass die Bedürfnisse dieses Systems buchstäblich 2 Felder von meiner Benutzertabelle sind, die in jeder Anfrage für ein Ticket benötigt werden, und das ist es. Ich schätze, ich versuche den Punkt abzuschätzen, an dem sich die Notwendigkeit für jeden teilen würde. Wenn es 0 Nachteile für die Verwendung dieser Beziehungen gibt, würde ich es absolut ausschließlich verwenden. –

+0

Es gibt keine Nachteile bei der Verwendung der in Laravel integrierten Beziehungen. Wenn sie zu viel Mühe scheinen, versichere ich Ihnen, es ist nur, weil sie Ihnen unbekannt sind. Diese Beziehung zwischen Benutzern und Tickets ist extrem einfach: - Benutzer haben viele Tickets - Tickets gehören zu einem Benutzer –

+0

Ich fügte eine Beispielimplementierung der Antwort hinzu. –