Laravel 5不寻常的关系

时间:2015-03-04 16:39:54

标签: php laravel laravel-5

参加一个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'。

有人有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我将采用一对多的关系并使用模型观察者来强制执行这些限制。

至于识别a和b是否在对象中还有其他内容可以识别出来?您始终可以在模型本身上存储一列,并使用范围来拉出正确的列。因此,您最终会得到$foo->bar()->a()->first()$foo->bar()->b()->first()

之类的内容

我会避免像你问题中那样使用2列方法。在一个较旧的项目上完成它的可怕。