作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 Laravel 8.x,我决定为我们的社区做一个网站项目,我们全年为我们的年轻人举办不同的体育赛事。足球、 Volley 、篮球等。
虽然我认为我已经走得很远了,但我在理解我应该如何设计匹配表时遇到了问题。
这是我当前数据库的部分图,我将更详细地解释:
每项运动都以锦标赛的形式全年进行。每个锦标赛可以有 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 作为“锦标赛的团队注册”,而不是创建另一个包含锦标赛条目和锦标赛积分榜的表格。
最佳答案
我最终创建了匹配模型:
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/
我正在开发一个系统,该系统基本上会记录本地体育俱乐部的结果,数据将包括结果、球队、比赛、球员之类的东西。 我只是想知道数据库设计的最佳解决方案是什么以及如何处理数据库中的“已删除”条目的普遍共识是什么
我是一名优秀的程序员,十分优秀!