Как проверить данные из сводной таблицы? - PullRequest
1 голос
/ 07 февраля 2020

У меня есть модели Event и User, у которых есть сводная таблица с именем event_users. В сводной таблице event_id и user_id сохраняются, когда пользователь нажимает кнопку участия.

Я отобразил весь список событий. Теперь я хочу отобразить событие, в котором принимал участие и не участвовало в качестве участника.

Я пытался контроллер

public function vieweventlist()
{
    $data['events'] = Event::with('users')->get();

    return view('page',$data);
}

блейд-файл

@foreach($events as $event)
    <h1>Event Name</h1>
    @foreach($event->users as $check)
        @if($check->pivot->user_id == auth()->user()->id && $check->pivot->event_id == $event->id)
            <button type="button" class="btn participateevent" disabled>Participated</button>
        @else
            <button type="button" class="btn participateevent">Participate</button>
        @endif
    @endforeach
@endforeach

Я установил отношение belongsToMany в моделях Event и User.

Проблема с этим кодом - второй foreach l oop - сводная таблица l oop. Предположим, у меня есть одна информация в сводной таблице. У меня есть список 5 событий. Из-за сводной таблицы foreach (вторая) в блейд-файле отображается только одна кнопка, в которой участвует, но не отображается кнопка @else Particip.

1 Ответ

1 голос
/ 07 февраля 2020

Ваш второй foreach делает так, что только события, у которых есть участники (если пользователь вошел в систему или нет), будут показывать кнопку (участвовал или участвует). Если к событию не прикреплено ни одного пользователя, кнопка не будет отображаться.

Если вы хотите получить список событий с информацией «если текущий пользователь уже участвует в нем или нет», то здесь лучший способ.

Контроллер

public function vieweventlist(){
    $data['events'] = Event::withCount('users', function($user) {
        $user->where('id','=', auth()->id());
    })->get();
 return view('page',$data);
}

Blade

@foreach($events as $event)
    <h1>Event Name</h1>
    @if($event->users_count)
      <button type="button" class="btn participateevent" disabled>Participated</button>
    @else 
      <button type="button" class="btn participateevent">Participate</button>
    @endif
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...