如何在动态字段上获得雄辩的关系匹配

时间:2019-07-01 17:00:34

标签: laravel relation

我有一个laravel对象,我想在其中获取关系。但是,我用来绑定关系的键可能是两个。之一。

例如,假设我有一个虚构的“酒包”,它实际上是一盒三瓶葡萄酒-三红,三白或三玫瑰。 “包装”作为一种产品出售,但葡萄酒瓶也可以单独出售。

Controller.php

$wine_pack = Pack::with('wine')->get();

Wine.php

class Pack
{
    public function wine()
    {
        return $this->belongsTo(Wine::class, 'wine_sku', 'sku');
    }
}

此代码实际上有效。但是在现实世界中,白葡萄酒通过其“ sku”来识别。红酒和玫瑰酒由“ ref_id”标识。

我正试图找到一种方法来按其sku查找单个葡萄酒,如果找不到,请按其ref_id查找。例如:

class Pack
{
    public function wine()
    {
        $wine = $this->belongsTo(Wine::class, 'wine_sku', 'sku');

        if($wine->count() <= 0)
            $wine = $this->belongsTo(Wine::class, 'wine_ref_id', 'ref_id');

        return $wine;

    }
}

这可能吗?

0 个答案:

没有答案