我有以下表结构:
产品可以有多种格式,每种格式都有自己的价格,属于不同的市场。如何从产品型号中检索市场列表?
我曾经有一个数据透视表,但现在我有两个数据透视表。
class Product extends Model
{
public function markets()
{
return $this->belongsToMany(Market::class);
}
}
为了得到我想要的结果,我做了以下事情:
public function markets()
{
return Market::whereIn('id', $this->prices()->distinct()->pluck('market_id')->toArray());
}
但是,我想知道是否有办法通过关系实现这一目标。
答案 0 :(得分:0)
您需要在模型中建立关系。
<强>产品型号:强>
public function productFormats()
{
return $this->belongTo(ProductFormatsModel::class);
}
<强> ProductFormatsModel:强>
public function productPrices()
{
return $this->belongTo(ProductPricesModel::class);
}
<强> ProductPricesModel:强>
public function markets()
{
return $this->hasOne(MarketsModel::class);
}
控制器中的:
foreach($product->productFormats as $productFormat)
{
foreach($productFormat->productPrices as $productPrice)
{
var_dump($productPrice->markets);
}
}
:
public function productPrices()
{
return $this->hasManyThrough(
'App\ProductPricesModel',
'App\ProductFormatsModel',
'product_id',
'product_format_id'
'id',
'id'
);
}
控制器中的
foreach($product->productPrices as $productPrice)
{
var_dump($productPrice->markets)
}