因此,anorder
具有一个foreign_key offer_id
。
并且offer
有一个foreign_key item_id
。
一个项目可能在多个优惠中。但是每个报价都有一个项目。
要约可能有多个订单。但是每个订单都有一个报价。
当我这样做时:
$orders = Auth::user()->orders()
->with('offer')
->get();
我得到这个:
id: 3,
user_id: 1,
offer_id: 5,
created_at: "2019-02-15 00:40:31",
updated_at: "2019-02-15 00:40:31",
offer: {
id: 5,
item_id: 3,
created_at: "2019-02-15 00:39:40",
updated_at: "2019-02-15 00:39:40"
}
如您所见,我可以为此优惠获得该赠品item_id: 3
。它的所有列,而不仅仅是ID。
通常,您将联接这两个表。如何用Eloquent做到这一点?
这是我雄辩的关系:
订购
public function offer()
{
return $this->belongsTo(Offer::class);
}
提供
public function orders()
{
return $this->hasMany(Order::class);
}
public function item()
{
return $this->hasOne(Item::class);
}
项目
public function offers()
{
return $this->belongsToMany(Offer::class);
}
@MihirBhende和@swonder的答案都以正确的方式指出。
确实应该是:
$orders = Auth::user()->orders()
->with('venue')
->with('offer.item')
->get();
或(同一件事):
$orders = Auth::user()->orders()
->with(['venue', 'offer.food'])
->get();
但是Offer
和Item
模型的关系应该颠倒:
提供
public function item()
{
return $this->belongsTo(Item::class);
}
项目
public function offers()
{
return $this->hasMany(Offer::class);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句