Показать правильное количество регистраций, которые являются неполными вместо статического значения 1 - PullRequest
0 голосов
/ 07 июня 2018

У меня есть метод index () в UserController, который возвращает прошлые и последующие регистрации пользователя в конференциях:

class UserController extends Controller
{
    public function index(Request $request){
        $pageLimit = 5;
        $user = $request->user();

        $pastRegistrations = $user->registrations()->with(['conference' => function ($query) {
            $query->where('end_date', '<', now());
        }])->paginate($pageLimit);

        $nextRegistrations = $user->registrations()->with(['conference' => function ($query) {
            $query->where('end_date', '>', now());
        }])->paginate($pageLimit);

        return view('users.index',
            compact('user', 'pastRegistrations','nextRegistrations'));
    }
 }

Затем в представлении для отображения регистрации используется foreach, как показано ниже.И появляется ссылка «Оплатить» только для регистраций, выполненных пользователем, которые еще не были оплачены, то есть столбец «статус» в таблице «регистрации» имеет значение «I» («I» означает незавершенную регистрацию).И это работает.

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

Знаете ли вы, как правильно показывать правильное количество неполных регистраций вместо статического значения 1?Для этого нужно выполнить другой запрос или можно повторно использовать код в index ()?

    <span>You have 1 registration in a conference(s) inmcomplete, please make the payment to complete your registration.</span>

    <ul>    
       <li>                      
    // show next registrations
    @foreach($nextRegistrations as $nextRegistration)
         <div class="alert alert-info" role="alert">
            <i class="material-icons">info</i>
            <span>You have 1 registration in a conference waiting for payment.</span>
        </div>
        @if(!empty($nextRegistration->conference || !empty($nextRegistration->conference->start_date)))
            <li class="list-group-item">
                <h5>{{optional($nextRegistration->conference)->name}}</h5>
                 @if ($nextRegistration->status === 'I')
                        <a href="{{route('conferences.payment',
                            ['id' => $nextRegistration->conference->id,
                            'slug' => $nextRegistration->conference->slug,
                            'regID'=> $nextRegistration->id])}}"
                            class="btn btn-primary ml-2"><i
                            class="fa fa-usd"></i> Pay  
                        </a>
                @endif
            </li>
        @endif
    @endforeach
   </li>
</ul>
<div class="text-center d-flex justify-content-center mt-3">
      {{$nextRegistrations->fragment('nextConferences')->links("pagination::bootstrap-4")}}
</div>

1 Ответ

0 голосов
/ 07 июня 2018

вы можете сделать что-то вроде этого

            $pastRegistrations = $user->registrations()->with(['conference' => function ($query) {
                $query->where('end_date', '<', now());
            }]);

            $nextRegistrations = $user->registrations()->with(['conference' => function ($query) {
                $query->where('end_date', '>', now());
            }]);
            $pastRegistrationCount = $pastRegistrations->where('status' , 1 )->count();
            $nextRegistrationCount = $nextRegistrations->where('status' , 1 )->count();
            $totalCount = $nextRegistrationCount + $pastRegistrationCount ;
            $pastRegistrations = $pastRegistrations-->paginate($pageLimit);
            $nextRegistrations = $nextRegistrations-->paginate($pageLimit);
            return view('users.index',
            compact('user', 'pastRegistrations','nextRegistrations' , 'totalCount'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...