当中间模型具有 hasMany 关系时,我可以使 hasManyThrough 关系正常工作。但是,如果中间模型有 belongsTo ,比如我的StoreProduct模型呢?对我来说这应该能够起作用是有意义的,但它并没有。
我错过了什么?
我如何获得所有产品的商店(通过" StoreProducts")?
class Product extends Model
{
public function storeProducts()
{
return $this->hasMany('App\StoreProduct');
}
public function stores()
{
return $this->hasManyThrough('App\Store', 'App\StoreProduct');
}
}
class StoreProduct extends Model
{
public function store()
{
return $this->belongsTo('App\Store');
}
}
class Store extends Model
{
public function storeProducts()
{
return $this->hasMany('App\StoreProduct');
}
}
答案 0 :(得分:1)
此关系类型无效。 HasManyThroughHasMany
和HasManyThroughBelongsTo
关系不存在。你可以自己编写来实现这个目标,或者你可以向后工作(我相信这更容易)
public function stores()
{
return Store::whereHas('store_products', function(q){
return $q->whereHas('product', function(q){
return $q->where('id', $this->id);
});
});
}
此功能将取代Products
模型中的功能。