2017-02-08 14 views
0

Ich benutze Larvel 5.3 und ich habe vier Tabellen, mit denen ich Beziehungen einrichten möchte.Wie laravel Beziehung einrichten

- Users 
- Orders 

- Products 
- Brands 

Ein Auftrag gehört einem Benutzer und ein Benutzer hat viele Aufträge. Ein Produkt gehört zu vielen Bestellungen und zusätzlich zu einer Marke. Eine Marke hat viele Produkte.

Ich versuche, einen Weg zu finden, einen Benutzerauftrag zu erhalten, mit den Produkten UND der Marke der Produkte.

User.php

public function orders(){ 
    return $this->hasMany('App\Order'); 
} 

order.php

public function user() { 
    return $this->belongsTo('App\User'); 
} 
public function products(){ 
    return $this->hasMany('App\Product'); 
} 

product.php

public function orders() { 
    return $this->belongsToMany('App\Orders'); 
} 
public function brand(){ 
    return $this->belongsTo('App\Brand'); 
} 

Brand.php

public function products() { 
    return $this->hasMany('App\Flavour'); 
} 

Ich möchte ein Array zurückbekommen, das die Bestellungen der Benutzer zusammen mit den Produkten jeder Bestellung und der Marke der Produkte enthält.

Könnte jemand beraten?

Antwort

1

Erstens, Produkte und Bestellungen haben eine viel zu viele Beziehung.

Holen Sie sich zuerst eine Benutzerbestellung. Da Benutzer viele Bestellungen haben, müssen Sie angeben, aus welcher Bestellung die Produktliste angezeigt werden soll.

$order = $user->orders->first(); 

Dann alle Produkte erhalten und ihre Marke

foreach($order->products) ... 

Für Ihre Super-Array können Sie Eager Loading versuchen

$arr = User::with('orders.products.brand')->get(); //Not tested