我有一个包含表及其相应模型的数据结构:
exchanges
arbitrage
balances
arbitrage
和balances
表在迁移过程中具有以下关系:
$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');
}