我有 4 张桌子。组合、产品、product_variants、combo_product(数据透视表)。combo_product有 2 列,即参考,reference_id。
现在,我想附加基于关系的条件。
if(reference == 'product')然后with('products.product_details')和
if(reference == 'product_variant')然后with('products.product_variant_details')。
这是我的关系:
组合.php
public function products()
{
return $this->hasMany('App\V1\Models\ComboProduct');
}
组合产品.php
public function product_details()
{
return $this->belongsTo('App\V1\Models\Product', 'product_reference_id');
}
public function product_variant_details()
{
return $this->belongsTo('App\V1\Models\ProductVariant', 'product_reference_id', 'product_variant_id');
}
我设法建立了一种关系,但我无法获得基于另一种关系条件的关系。这是我的代码。
Combo::whereComboId($id)->with([
'products' => function ($query) {
$query->with(['product_details'])
->where('product_reference', 'product');
}
])->get();