2017-04-17 8 views
1

BenutzertabelleWie in Laravel 5

+------------+ 
| User | 
+------------+ 
| uid  | 
| name  | 
| created_at | 
| updated_at | 
+------------+ 

Auto Tabelle

+------------+ 
| Car  | 
+------------+ 
| cid  | 
| uid  | 
| car_name | 
| created_at | 
| updated_at | 
+------------+ 

Ich verwende Query Builder und meine Abfrage individuelle Abfrageergebnis zurück:

DB::table('user') 
    ->join('car', 'user.uid', '=', 'car.uid') 
    ->where('user.uid', '=', $uid) 
    ->get(); 

er abgeschnitten created_at und updated_at von Autotabelle und es bekommt mich:

{ 
    "uid": 5, 
    "name": "Alexander Lowe DVM", 
    "created_at": "2017-04-01 18:12:45", 
    "updated_at": "2017-04-01 18:12:45", 
    "cid": 5, 
    "car_name": "BMW X8", 
} 

Und ich möchte unser Abfrageergebnis werden, Wie kann ich das tun? Irgendwelche Lösungen?

{ 
    "uid": 5, 
    "name": "Alexander Lowe DVM", 
    "created_at": "2017-04-01 18:12:45", 
    "updated_at": "2017-04-01 18:12:45", 
    "car": { 
    "cid": 5, 
    "car_name": "BMW X8", 
    "created_at": "2017-04-01 18:12:45", 
    "updated_at": "2017-04-01 18:12:45" 
    } 
} 

.

+0

Sie können eloquent Modell verwenden und Beziehungen zwischen ihnen definieren und die Ergebnisse erhalten. –

Antwort

0

Versuchen Sie dies und sehen, was Sie bekommen:

$users = DB::table('user') 
      ->join('car', 'user.uid', '=', 'car.uid') 
      ->where('user.uid', '=', $uid) 
      ->select('user.*', 'car.created_at', 'car.updated_at') 
      ->get(); 
0

1) Verwenden Eloquent> 2) Beziehungen definieren

User.php

// for one to many relationship 
    public function car() { 
     return $this->hasMany(Car::class, 'uid'); 

//OR for one to one relationship 
     return $this->hasOne(Car::class, 'uid'); 
    } 

Und für Ihre Anfrage

User::with('car')->find($uid); 
+0

Kann ich dies tun, ohne eloquent zu verwenden? – RaxPat

0

Definieren Sie den folgenden Code in Ihr Benutzermodell & es automatisch in der Abfrage abgerufen finden,

public function car() 
{ 
    return $this->hasOne('App\Car'); 
    //return $this->hasMany('App\Car'); //Use this if user has multiple cars 
} 

hier die Abfrage ist,

DB::table('user') 
    ->where('user.uid', '=', $uid) 
    ->with('car') 
    ->get(); 

Vergessen Sie auch nicht

Fremdschlüsselbeziehung
+0

Kann ich dies tun, ohne eloquent zu verwenden? – RaxPat

0
  1. machen eine Beziehung zu definieren, Schiff im Modell. öffentliche Funktion Auto() {return $ this-> hasOne ('App \ Car'); }
  2. als verwenden Sie die mit() Benutzer :: wo ('uid', '=', $ uid) -> mit ('Auto') -> get();