Laravel 5 不寻常的关系

Laravel 5 Unusual Relationship

正在创建一个 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'。

有人有什么建议吗?

我要解决这个问题的方法是使用一对多关系并使用模型观察者来强制执行限制。

至于识别 a 和 b 对象中是否有其他东西可以识别它们?您始终可以在模型本身上存储一列,并使用范围来提取正确的列。所以你最终会得到类似 $foo->bar()->a()->first()$foo->bar()->b()->first()

的东西

我会避免像您的问题那样使用 2 列方法。在一个较旧的项目上这样做,太可怕了。