невозможно сохранить при использовании [IF] в красноречивой работе - PullRequest
0 голосов
/ 29 октября 2019

Мне нужно хранить, когда у меня есть данные в [Booking], но я не сохраняю что-либо для [scan]

public function store(Request $request, $id){
    $event = event::findOrFail($id);
    $booking = booking::where('student_id',Auth::user()->student_id)
    ->where('name',Auth::user()->name)
    ->where('event_id',$event->id);
    if($booking!=NULL){
    $requestData = $request->all();
    scan::create($requestData);
    return redirect('event/' . $event->id .'/scan');
    return view('event.scan', compact('event','scan','booking'));
    }else{
    return redirect('event/' . $event->id .'/scan');
    }
}

, но при использовании $ booking == null хранить ничего нельзя в бронировании

Ответы [ 2 ]

3 голосов
/ 29 октября 2019

Ваш запрос не завершен. В нем отсутствует какой-либо метод окончательного запроса, такой как get(), first() или exists()

Также у вас есть два оператора return внутри блока if. Будет выполнено только первое, второе будет проигнорировано.

Правильный код должен быть таким:

public function store(Request $request, $id){
    $event = event::findOrFail($id);

    $booking = booking::where('student_id',Auth::user()->student_id)
    ->where('name',Auth::user()->name)
    ->where('event_id',$event->id)
    ->get(); // look this line

    if($booking!=NULL){
        $requestData = $request->all();
        scan::create($requestData);
        return redirect('event/' . $event->id .'/scan'); // I think this should not be here, right?
        return view('event.scan', compact('event','scan','booking')); // this is being ignored.
    }else{
        return redirect('event/' . $event->id .'/scan');
    }
}
0 голосов
/ 29 октября 2019

вы можете обновить свой метод так. это намного яснее и читабельнее (я думаю, в любом случае).

public function store(Request $request, $id)
{
    //use first to get a booking or use get() for collections of booking
    $booking = Booking::where('student_id', auth()->user()->student_id)
                ->where('event_id', $id)
                -first(); 

    if (is_null($booking)) {
        return redirect('event/' . $id . '/scan');
    }

    return view('event.scan', [
        'event' => Event::findOrFail($id),
        'scan' => Scan::create($request->all()),
        'booking' => $booking
    ]);
}

Надеюсь, это поможет Cheers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...