我正在尝试从数据库中检索所有复选框值,并且需要检查所选的那些值。我在模型之间有很多关系,我现在能够从数据库中检索所有值并将它们写入刀片或刚刚选择的值(是一个或另一个)中,但是我似乎找不到解决方案检索它们存在于数据库中的所有对象以及被选中要检查的对象。任何帮助表示赞赏。这是我的代码和数据库表。
user_profiles表
id user_id first_name
1 1 Mike
运动桌
id name
1 Football
2 Basketaball
3 Handball
4 Etc...
user_sport表
id user_id sport_id
1 1 1
2 1 2
UserProfile.php
public function sports()
{
return $this->belongsToMany(UserSport::class, 'user_sport', 'user_id', 'sport_id');
}
UserSport.php
public function userProfiles()
{
return $this->belongsToMany(UserProfile::class, 'user_sport', 'sport_id', 'user_id');
}
UserProfileController.php
public function showProfile($username, Request $request)
{
$profileId = User::getIdFromUsername($username);
$sportsOptions = UserSport::get();
$userSportsOptions = UserProfile::findOrFail($profileId)->sports()->get();
return view('profile.show', compact('sportsOptions', 'userSportsOptions'));
}
show.blade.php
@foreach($sportsOptions as $sportsOption)
<label class="checkbox-inline">
<input type="checkbox" id="sport" name="sport[]" value="{{$userSportsOptions->id}}"> {{$userSportsOptions->name}}
</label>
@endforeach
因此,我知道命名约定不是很好,但是在这种情况下,关系有效,并且在刀片中与foreach和$ sportsOptions一起使用,示例显示了运动表中的所有四个值,而与$ userSportsOptions一起显示了这两个值(选定值) )。我需要有关如何实现在刀片中显示所有值以及已选择要选择的值的帮助。
答案 0 :(得分:1)
@foreach($userSportsOptions as $userSportsOptionRow)
$selectedIds[] =$userSportsOptionRow->sport_id;
@endforeach
$userSportsOptions->id
@foreach($sportsOptions as $sportsOption)
<label class="checkbox-inline">
<input type="checkbox" id="sport" name="sport[]" value="{{$sportsOption->id}}" @if(in_array($sportsOption->id,$selectedIds))> {{$sportsOption->name}}
</label>
@endforeach```