Проблема с получением выбранных флажков из базы данных в Laravel - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь получить все значения флажков из базы данных, и те значения, которые выбраны, необходимо проверить. У меня есть много ко многим отношениям между моделями, и в настоящее время я могу извлечь все значения из базы данных и записать их в блейд или те значения, которые только что выбраны (это одно ИЛИ другое), но я не могу найти решение для восстановить их все, что существует в базе данных, и те, которые выбраны для проверки. Любая помощь приветствуется. Вот мой код и таблицы базы данных.

user_profiles table

id    user_id    first_name
 1        1         Mike

sport table

id    name
1    Football
2    Basketaball
3    Handball
4    Etc...

user_sport table

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 в blade-файле и в примере он отображает все четыре значения из таблицы sport, а с $ userSportsOptions - эти два значения ( выбранные значения). Мне нужна помощь, чтобы добиться того, чтобы в блейде отображались все значения и те, которые были выбраны для выбора.

1 Ответ

1 голос
/ 30 апреля 2020
    @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```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...