我正在Laravel的一个程序
在这个计划中,参与者分为几个小组,
例如,A队到G队 串联布置,具有(A-> B-> C-> D-> E-> F-> G)在球队比赛结束后的第二天,球队每天都被选中(作为现在的球队) 就这样
很明显每天都必须在场。
现在我的问题是:
1 - 确定此类团队的形式
2 - 如果团队从安排中被淘汰,则不会影响连接的行
3增加了一个新团队并被安排在这一排的任何位置。 EX(A-> B-> Z-&℃)
这是我的代码的一部分:
团队 - 人员表:
public function up()
{
Schema::create('teams-people', function (Blueprint $table) {
$table->increments('id');
$table->integer('order')->unsigned()->nullable();
$table->integer('teams_id')->unsigned()->index();
$table->integer('people_id')->unsigned()->index();
$table->timestamps();
});
}
人民表
public function up()
{
Schema::create('people', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->boolean('gender');
$table->timestamps();
});
}
ORM关系
public function team()
{
return $this->hasMany('App\teams-people','people_id');
}
团队 - 人与人的关系:
public function person()
{
return $this->belongsTo('App\person', 'people_id');
}
**一个解决方案可能是将“下一个团队”列添加到团队的表中以定义哪个团队是下一个团队,但我认为这可能会导致案例出现问题,例如取消团队或添加新团队和团队以这种方式可以成为两个或更多团队的下一个团队,有更好的方法吗?
答案 0 :(得分:2)
如果order
列定义了订单关系(A
团队有order
1,B
团队有2
等),您可以选择这样的下一个团队,将在订单中返回下一个团队:
$team = Team::where('order', '>', <team-A-order>)->first()
当你添加一个新团队时,只需要increment这样的订单:
DB::table('teams')->where('id', '>', $order)->increment('order');