gpt4 book ai didi

mysql - 与 Laravel 中额外字段的一对多关系

转载 作者:搜寻专家 更新时间:2023-10-30 23:34:39 25 4
gpt4 key购买 nike

我在 Laravel 中实现一些数据库 ER 时遇到了问题。 “1-1”和“1-N”关系都存在此问题。

我认为下面的示例非常简单。

我们有一个“团队”和一个“玩家”

一支球队有很多球员。如果我需要为该关系保留额外信息,就会出现问题。

一个例子是“该球员从 Date_1 到 Date_2 为该球队效力”。

在这个例子中,我们似乎需要一个额外的表来保存这种信息。据我所知,Laravel 不会为“1-1”或“1-N”使用数据透视表。

那么,我们将如何以 Laravel 方式实现这个案例......?

最佳答案

这是一个棘手的问题。但我会再添加一个名为 player_records 的表。具有以下属性

player_id
team_id.
start_date
end_date

在每个模型中,我都会有辅助方法来获取例如活跃玩家。

这是团队模型。

class Team extends Model
{

public function playerRecords() {
return $this->hasMany(PlayerRecord::class);
}

public function activePlayers() {
return $this->playerRecords()->where('start_at', '<=', Carbon::now())->where('ends_at', '>=', Carbon::now())->with('player')->get()->pluck('player');
}
}

这是播放器模型

class Player extends Model
{

public function playerRecords() {
return $this->hasMany(PlayerRecord::class);
}

}

这是 PlayerRecord 模型

class PlayerRecord extends Model
{

public function player() {
return $this->hasMany(Player::class);
}

}

关于mysql - 与 Laravel 中额外字段的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44639950/

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