从Laravel中的数据库检索所选复选框的问题

时间:2020-04-30 07:54:25

标签: php laravel

我正在尝试从数据库中检索所有复选框值,并且需要检查所选的那些值。我在模型之间有很多关系,我现在能够从数据库中检索所有值并将它们写入刀片或刚刚选择的值(是一个或另一个)中,但是我似乎找不到解决方案检索它们存在于数据库中的所有对象以及被选中要检查的对象。任何帮助表示赞赏。这是我的代码和数据库表。

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一起显示了这两个值(选定值) )。我需要有关如何实现在刀片中显示所有值以及已选择要选择的值的帮助。

1 个答案:

答案 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```
相关问题