2016-07-04 12 views
-1

ich überprüfen, ob ein Benutzer online ist (im Spiel), und wenn er nicht dann ist eine andere prüft tun, um ein SQL-Update durchzuführen.Unite/beitreten Datenbank und Eloquent Modell Abfrage in Laravel 5.2

Eigentlich habe ich diese beiden Abfragen.

$isOnline = DB::connection('mssql')->table('USER_STAT')->where('user_id', $userID)->value('ConnectionStat'); 
$character = Character::where('acc_id', $userID)->where('Name', $characterName)->firstOrFail(); 

Gibt es eine Möglichkeit, ich union oder join verwenden kann, um eine DB-Abfrage zu speichern? Ich glaube, das ist keine gute Praxis, und es gibt eine bessere Methode, die ich in den Dokumenten nicht finden kann.

Ich habe versucht, so etwas wie dies, aber ohne Erfolg:

$character = Character::where('acc_id', $userID)->where('Name', $characterName)->firstOrFail(); 
$result = DB::connection('mssql')->table('USER_STAT')->where('user_id', $userID)->union($character)->get(); 

Vielen Dank im Voraus!

+0

Sie versuchen, die 'ConnectionStat' zu aktualisieren? –

+0

@chasenyc nein, ich muss nur wissen, ob er online ... ConnectionStat entweder 0 (offline) zurückgeben sollte oder 1 (online). – Frondor

Antwort

1

eine Beziehung in Ihrem Charakter Modell zu Modell der USER_STAT Tabellensuche Sie können einfach mit den Dingen, die Sie brauchen, um zu bestimmen, ob ein irgendwo Update benötigt wird.

Eloquent Relationships

Diese Konsolidierung nicht die Abfragen in einem, wie mit einem Join, aber sie sind trotzdem nicht schwer, und die ORM in vollen Zügen mit mehr signifikante Vorteile auf lange Sicht haben wird.

Wenn Sie denken, Sie müssen ein verwenden SQL-Join Sie auf die Querybuilder bleiben müssen, aber die ORM ist in der Regel die bessere Wahl

Query Builder Joins

+0

Danke! Ich bin ein Neuling, also habe ich auch Probleme mit Models ... Erzählst du mir, dass ich eine 'ConnectStatModel.php' erstellen und an das Benutzermodell anhängen soll? Welche Art von Beziehung sollte ich für die Datenbankstruktur verwenden? – Frondor

+1

Ich würde ein UserStat-Modell machen, und im Charakter-Modell eine Beziehung dazu herstellen 'öffentliche Funktion stat() { Rückgabe $ this-> hasMany ('UserStat', 'user_id', 'acc_id'); } ' wenn ACC_ID wie $ primaryKey in Zeichenmodell gesetzt ist, können Sie, dass Ihr $ -Zeichen mit der Beziehung bekommen auslassen geladen und Zugang alle zugehörigen Statistiken leicht ' Zeichen $ = Zeichen :: mit ('stat ') -> where (' acc_id ', $ userID) -> wo (' Name ', $ characterName) -> firstOrFail(); $ isOnline = $ zeichen-> stat-> ConnectionStat; ' – CommonToast