2017-02-08 86 views
0

我使用的是Larvel 5.3,我有四個表,我希望與之建立關係。如何設置laravel關係

- Users 
- Orders 

- Products 
- Brands 

訂單屬於用戶,用戶有很多訂單。 產品屬於多個訂單,另外屬於一個品牌。 一個品牌有很多產品。

我試圖找到一種方法來獲取用戶的訂單,產品和產品的品牌。

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'); 
} 

我希望找回包含用戶訂單的數組,以及每個訂單產品和產品的品牌。

任何人都可以建議嗎?

回答

1

首先,產品和訂單有多對多的關係。

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

先獲取用戶的訂單。由於用戶有很多訂單,因此您需要指定要從哪個訂單查看產品列表。

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

然後讓所有的產品和自己的品牌

foreach($order->products) ... 

對於你的超級數組,你可以嘗試預先加載

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