假设我有以下表格:
order
order_id | customer_name | delivery_address
1 | David | ABC Road, DEF district
...........Some other record ..............
order_dish
order_id | dish_id | dish_name
1 | 1 | chicken wing
1 | 2 | meat pie
1 | 3 | onion ring
...........Some other record ..............
dish_ingredient
dish_id | ingredient
1 | chicken wing
1 | salt
1 | oil
2 | pork meat
2 | flour
3 | onion
...........Some other record ..............
在Laravel 5中,如果我想获得订单的所有菜肴,我可以这样做:
$order = Order::hasMany('App\OrderDish', 'order_id')->get();
有没有办法可以在一行中获得订单所需的所有成分?
答案 0 :(得分:0)
是。 “has-many-through”关系提供了通过中间关系访问远程关系的便捷捷径。您可以使用模型的 hasManyThrough()方法来定义它。
首先,在订单模型中定义关系:
class Order extends Model {
public function ingredients() {
return $this->hasManyThrough('App\DishIngredient', 'App\OrderDish', 'order_id', 'dish_id');
}
}
通过定义这样的关系,您将能够获得给定订单的成分:
$ingredients = $order->ingredients;