与同一模型的雄辩一对一关系

埃德温克劳斯

我有可用的现有数据:我有一个表格,其中包含所有名为sportevents.

id ....
name ....
....

这些体育赛事有一个数据透视表,用于定义与前一年和明年发生的“相同”体育赛事的关系。有点令人困惑的设计,但这里有一个叫做 eventrelations 的表:我试着用 2018 年和 2019 年来解释

id ....
event1: sportevent_id of 2019 event
event2: sportevent_id or 2018 event
....

我的方法是创建一个Eventrelation具有以下关系的模型

public function previous(){
    return $this->belongsTo('App\Sportevent','event1','id' );
}

public function next(){
    return $this->belongsTo('App\Sportevent','event2','id' );
}

在我的Sportevent模型中,我将执行以下操作:

public function previousEvent(){
    return $this->hasOne('App\Eventrelation','event2','id' );
}

public function nextEvent(){
    return $this->hasOne('App\Eventrelation','event1','id');
}

虽然这会奏效,但我认为这不是正确的方法。我已经用数据透视表设置了其他关系,但考虑到现有的数据结构和与同一模型的关系,这个关系似乎有点棘手。任何建议将不胜感激。

更新

我按照我上面建议的方式让它工作,我宁愿拥有一个更干净的版本的原因是减少代码(这是更干净的一部分:-))。所以这里是我如何称呼这些关系以及我更愿意如何称呼它们:

    $previousEvent = $thisEvent->previousEvent ? $thisEvent->previousEvent->previous : null;
    $nextEvent = $thisEvent->nextEvent ? $thisEvent->nextEvent->next : null;

    // Better would be:
    $previousEvent = $thisEvent->previousEvent;
    $nextEvent = $thisEvent->nextEvent;
法蒂梅·马吉德

您根本不需要枢轴模型。您可以与类本身建立关系。

在您的体育赛事模型中:

public function previousEvent()
{
  return $this->belongsToMany(SportsEvent::class, 'pivot_table_name', 'event_1', 'id');
}

public function nextEvent()
{
  return $this->belongsToMany(SportsEvent::class, 'pivot_table_name', 'event_2', 'id');
}

如果只有一个事件,您可以->first()在关系的末尾添加一个术语

但是,您也可以简单地添加两列 2018_event 和 2019_event 并在那里添加事件的 id,然后使用 hasOne 关系。你的来电

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

休眠一对一关系

来自分类Dev

一对一关系插入

来自分类Dev

休眠一对一关系错误

来自分类Dev

何时在Django模型中使用一对一关系

来自分类Dev

休眠一对一关系

来自分类Dev

具有一对一关系的嵌入式json模型

来自分类Dev

插入一对一关系

来自分类Dev

雄辩的:如何在同一模型上定义一对一关系

来自分类Dev

具有预填充模型的DRF一对一关系序列化器

来自分类Dev

雄辩的一对一关系和两个自定义字段

来自分类Dev

Django中两个模型(字段)与当前模型的一对一关系

来自分类Dev

Laravel雄辩的一对一关系返回空集合

来自分类Dev

如何在Mirage JS中使用多态一对一关系播种模型?

来自分类Dev

具有预填充模型的DRF一对一关系序列化器

来自分类Dev

休眠一对一关系

来自分类Dev

建立一对一关系

来自分类Dev

GSON一对一关系

来自分类Dev

休眠一对一关系

来自分类Dev

如何使用一对一关系关联模型

来自分类Dev

Django,当多个模型与用户具有一对一关系时

来自分类Dev

雄辩的一对一关系和两个自定义字段

来自分类Dev

一对一关系

来自分类Dev

MYSQL一对一关系

来自分类Dev

实现一对一关系

来自分类Dev

与查询的一对一关系

来自分类Dev

Eloquent 模型:使用子表上的标志定义一对一关系

来自分类Dev

具有一对一关系的模型的 DRF 序列化程序

来自分类Dev

对具有一对一关系的模型的更改未保存

来自分类Dev

laravel 更新与模型的一对一关系