blade 缺少 values/indecies 的 foreach 循环
blade foreach loops with missing values/indecies
我目前被一个数据库方案所困扰。我还没到重构的地方(还)。我只需要让它继续下去。简而言之。我有一个团队。一个团队有很多位置.. 所以一个团队可以容纳 1 个用户,可以容纳 12 个,或者 1873 个(我知道这不现实,但你明白了)。 Team 和 positions 也有多态关系。一个位置有一个点,user_id,多态关系的id/model。所有这一切都很好,花花公子。一个用户被分配到一个团队中。
在我的blade文件中,我可以做到
@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');
您可以这样做:
@php
$positions = collect($team->positions)->keyBy('spot');
@endphp
@for($i=0;$i <= $positions->keys()->last();$i++)
@if (isset($positions[$i]))
<p>{{$positions[$i]->spot}}</p>
<p>{{$positions[$i]->user->name}}</p>
@else
<p>{{$i}}</p>
<p>''</p>
@endif
@endforeach
我目前被一个数据库方案所困扰。我还没到重构的地方(还)。我只需要让它继续下去。简而言之。我有一个团队。一个团队有很多位置.. 所以一个团队可以容纳 1 个用户,可以容纳 12 个,或者 1873 个(我知道这不现实,但你明白了)。 Team 和 positions 也有多态关系。一个位置有一个点,user_id,多态关系的id/model。所有这一切都很好,花花公子。一个用户被分配到一个团队中。
在我的blade文件中,我可以做到
@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');
您可以这样做:
@php
$positions = collect($team->positions)->keyBy('spot');
@endphp
@for($i=0;$i <= $positions->keys()->last();$i++)
@if (isset($positions[$i]))
<p>{{$positions[$i]->spot}}</p>
<p>{{$positions[$i]->user->name}}</p>
@else
<p>{{$i}}</p>
<p>''</p>
@endif
@endforeach