【发布时间】:2021-09-02 19:42:37
【问题描述】:
我目前受到数据库方案的困扰。我还没有重构的地方(还)。我只需要搞定这件事。简而言之。我有一个团队。一个团队有很多位置.. 所以一个团队可以容纳 1 个用户,可以容纳 12 个或 1873 个(我知道不切实际,但你明白了)。团队也与位置具有多态关系。一个位置有一个点、user_id 和多态关系的 id/model。所有这一切都很好,花花公子。用户在团队中被分配了一个位置。
在我的刀片文件中,我可以做到
@foreach($team->poisitions as $position)
<p>{{$position->spot}}</p>
<p>{{$position->user->name}}</p>
@endforeach
然后我会得到一个显示(一旦格式正确):
1 user1
2 user4
3 user10
7 user3
9 user12
太好了,这按预期工作。然而,这不是我需要的。无论团队中有多少位置,我都需要显示空格。所以我需要:
1 user1
2 user4
3 user10
4 ''
5 ''
6 ''
7 user3
8 ''
9 user12
10 ''
......
20 ''
我希望得到一些帮助。稍后我什至会寻求帮助来重构它,但现在,任何帮助都会很棒。
为了完整起见,这里有一些代码:
models\team.php
public function positions(): \Illuminate\Database\Eloquent\Relations\MorphMany
{
return $this->morphMany(Position::class, 'positionable')->orderBy('spot', 'ASC');
}
database/scheme teams:
$table->text('name');
$table->integer('spots')->default(6);
database/scheme positions:
$table->integer('spot')->nullable();
$table->foreignId('user_id')->constrained()->cascadeOnDelete()->cascadeOnUpdate();
$table->unsignedBigInteger('positionable_id');
$table->string('positionable_type');
【问题讨论】:
-
你如何决定 spot 应该是空的。是否有任何条件或 $position->user->name 返回空?
-
如果该位置为空,则位置中将没有表格行。只存储填充的点。
标签: php laravel loops laravel-blade