2017-02-08 9 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 

 Смежные вопросы

  • Нет связанных вопросов^_^