我有一个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;
}
}
这可能吗?