Eloquent:基于条件的嵌套预先加载

时间:2017-03-07 06:10:33

标签: laravel eloquent nested eager-loading laravel-eloquent

我有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')

这是我的关系:

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');
}

我设法得到一个关系,但我不能得到其他关系条件。 这是我的代码。

Combo::whereComboId($id)->with([
   'products' => function ($query) {
        $query->with(['product_details'])
            ->where('product_reference', 'product'); 
         }
    ])->get();

0 个答案:

没有答案