参加一个laravel 5项目,其中我有一个不寻常的关系来创建。
模型Foo恰好连接到模型Bar的两个实例(在不同的键下),但每个Bar只能连接到一个Foo,无论它占据哪两个字段。即
Foo
id
barA()
barB()
Bar
id
foo()
不确定如何在关系方面正确映射。我试过了
Foo{
public function barA(){
return $this->belongsTo('\App\Bar','bar_a_id');
}
public function barB(){
return $this->belongsTo('\App\Bar','bar_b_id');
}
}
哪种方法运作得相当好,但在那里我无法弄清楚如何创造关系的另一面。
我知道我可以使用1:m的关系,但随后它变得模棱两可,哪个实体是' a'这是' b'。
有人有什么建议吗?
答案 0 :(得分:1)
我将采用一对多的关系并使用模型观察者来强制执行这些限制。
至于识别a和b是否在对象中还有其他内容可以识别出来?您始终可以在模型本身上存储一列,并使用范围来拉出正确的列。因此,您最终会得到$foo->bar()->a()->first()
和$foo->bar()->b()->first()
我会避免像你问题中那样使用2列方法。在一个较旧的项目上完成它的可怕。