gpt4 book ai didi

mysql - Laravel 在体育中的 Eloquent 关系

转载 作者:行者123 更新时间:2023-12-04 13:50:56 25 4
gpt4 key购买 nike

我正在学习 Laravel 8.x,我决定为我们的社区做一个网站项目,我们全年为我们的年轻人举办不同的体育赛事。足球、 Volley 、篮球等。
虽然我认为我已经走得很远了,但我在理解我应该如何设计匹配表时遇到了问题。
这是我当前数据库的部分图,我将更详细地解释:
enter image description here
每项运动都以锦标赛的形式全年进行。每个锦标赛可以有 1 个或多个小组和 1 个或多个季后赛。根据可用的球队,我们创建 1-4 个小组,通常是为了让所有 child 玩更长时间,但仍然保持竞争力,我们可以为每场比赛组成 2 个不同的季后赛,具体取决于小组的位置。
我创建了模型:
运动

public function tournaments() {
return $this->hasMany('App\Models\Tournament');
}
团队
public function tournaments() {
return $this->belongsToMany('App\Models\Tournament')->withTimestamps();
}

public function groups() {
return $this->belongsToMany('App\Models\Group')->withTimestamps();
}

public function playoffs() {
return $this->belongsToMany('App\Models\Playoff')->withTimestamps();
}
public function tournaments() {
return $this->belongsToMany('App\Models\Tournament')->withTimestamps();
}

public function teams() {
return $this->belongsToMany('App\Models\Team')->withTimestamps()->withPivot(
'position',
'points',
'wins',
'losses',
'draws',
'off',
'def'
);
}
季后赛
类似于 组
锦标赛
public function sport() {
return $this->belongsTo('App\Models\Sport');
}

public function groups(){
return $this->belongsToMany('App\Models\Group')->withTimestamps();
}

public function playoffs(){
return $this->belongsToMany('App\Models\Playoff')->withTimestamps();
}

public function teams() {
return $this->belongsToMany('App\Models\Team')->withTimestamps();
}
由于小组/季后赛属于锦标赛,我决定使用 group_team/playoff_team 作为“锦标赛的团队注册”,而不是创建另一个包含锦标赛条目和锦标赛积分榜的表格。
我现在遇到的问题是创建匹配表。我该怎么做?
真实的例子是:
我们有篮球比赛。 A队和B队同分在A组,进行一场比赛,A队以21:19获胜。由于我们仍处于小组赛阶段,group_team 表应该得到更新。
到目前为止,已经完成了所有这些多对多关系,我不确定如何设计匹配表,它可能应该具有:
  • team1_id
  • team2_id
  • team1_score
  • team2_score
  • group_id (?)

  • 谢谢你的建议。

    最佳答案

    我最终创建了匹配模型:

    public function team1() {
    return $this->belongsTo(Team::class, 'team1_id');
    }

    public function team2() {
    return $this->belongsTo(Team::class, 'team2_id');
    }

    public function group() {
    return $this->belongsTo(Group::class,);
    }

    public function playoff() {
    return $this->belongsTo(Playoff::class,);
    }
    $table->foreign('group_id')
    ->references('id')->on('groups')
    ->onDelete('cascade');

    $table->foreign('playoff_id')
    ->references('id')->on('playoffs')
    ->onDelete('cascade');

    $table->foreign('team1_id')
    ->references('id')->on('teams')
    ->onDelete('cascade');

    $table->foreign('team2_id')
    ->references('id')->on('teams')
    ->onDelete('cascade');
    也许不是最好的方法,我需要重新审视一些东西,但它有效。

    关于mysql - Laravel 在体育中的 Eloquent 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69502032/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com