这是一个棘手的问题。但我会再添加一个名为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);
}
}
谢谢爱德华回答。我可以看到你的观点。我有一个问题,但。这样我们每次需要PlayerRecord时都会做一个额外的查询(这个确实不算太多!)。这是最好的方式吗? –
确实有一个额外的查询。但我目前无法找出更好的解决方案。 –