Laravel引用同一张表的两个外键

时间:2019-04-09 06:19:26

标签: laravel

我有一个包含表及其相应模型的数据结构:

exchanges
arbitrage
balances

arbitragebalances表在迁移过程中具有以下关系:

$table->bigInteger('ex1_id')->unsigned();
$table->foreign('ex1_id')->references('id')->on('exchanges')->onDelete('cascade');
$table->bigInteger('ex2_id')->unsigned();
$table->foreign('ex2_id')->references('id')->on('exchanges')->onDelete('cascade');

这是因为它们每行需要2次不同的交换。

在我看来,我想使用: $arbitrage->exchange1->title$arbitrage->exchange2->title$balance->exchange1->title

现在,我正在努力使用哪种雄辩的关系类型。首先,我认为我需要一个多对多的多态性,因为套利和平衡共享与交易所的关系。但是,然后在单独的表中共享关系。

我应该使用多个一对一关系,然后在Arbitrage模型中这样做:

public function exchange1()
{
   return $this->hasOne('App\Exchange', 'ex1_id');
}

public function exchange2()
{
   return $this->hasOne('App\Exchange', 'ex2_id');
}

但是,如果我这样做,那么对于Exchange模型来说,这看起来不合适,因为它可能不会返回2行(对于2个交换)?

public function arbitrage()
{
   return $this->belongsTo('App\Arbitrage');
}

0 个答案:

没有答案