私は4つのテーブルを持っています。コンボ、製品、product_variants、combo_product (ピボット テーブル)。ombo_productには 2 つの列、つまり参照、 reference_id があります。
ここで、関係条件ベースを付けたいと思います。
if(reference == 'product') then with('products.product_details')および
if(reference == 'product_variant') then with('products.product_variant_details') .
これは私が持っている関係です:
Combo.php
public function products()
{
return $this->hasMany('App\V1\Models\ComboProduct');
}
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');
}
1 つの関係を取得できましたが、もう 1 つの関係条件を取得できません。これが私のコードです。
Combo::whereComboId($id)->with([
'products' => function ($query) {
$query->with(['product_details'])
->where('product_reference', 'product');
}
])->get();