не может ссылаться на имя переменной "id" более одного раза - PullRequest
0 голосов
/ 22 сентября 2019

Мне нужно удалить бронирование по идентификатору в моем под-событии с идентификатором

enter image description here

 Route::delete('event/{id}/booking/{id}', 'bookingController@destroy');

Мой контроллер

    public function destroy($id)
    {
        booking::destroy($booking->id);
        return redirect('event')->with('flash_message', 'ลบข้อมูลการสำรองที่นั่งเรียบร้อย');
    }

Мой метод Удалить

<form method="POST" action="{{ url('event/' . $event->id .'/booking/' . $booking->id) }}" accept-charset="UTF-8" style="display:inline">
                            {{ method_field('DELETE') }}
                            {{ csrf_field() }}
                            <button type="submit" class="btn btn-danger btn-sm" title="Delete event" onclick="return confirm(&quot;Confirm delete?&quot;)"><i class="fa fa-trash-o" aria-hidden="true"></i>ยกเลิกการจอง</button>
                        </form>

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Идентификаторы - это два отдельных идентификатора?Или они имеют один и тот же идентификатор?

Если это два разных идентификатора, вам нужно дать им два явно разных имени, например, booking_id и event_id, и тогда вы сможете получить к ним доступ в контроллере, как выхочу.

 Route::delete('event/{event_id}/booking/{booking_id}', 'bookingController@destroy');

Тогда в вашем контроллере вы можете сделать

    public function destroy($event_id, $booking_id)
    {
        ...
    }

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

    //$A = event_id, $B = booking_id
    public function destroy($A, $B)
    {
        ...
    }
0 голосов
/ 23 сентября 2019

Ваш маршрут имеет две переменные (event_id) и (booking_id), но ваш метод имеет только одну переменную ($ id) Использование существующего маршрута (который не соответствует принципу работы eloquent)

web.php

Route::delete('event/{event_id}/booking/{booking_id}', 'bookingController@destroy')->name('booking.destroy');

blade

action = "{{ route('booking.destroy', $event_id, $booking_id) }}"

controller

public function destroy ($booking_id, $event_id)

Возможно, вы захотите взглянуть на отношения laravel здесь: https://laravel.com/docs/6.x/eloquent-relationships

Это сделает вашу жизнь намного проще, поэтому eloquent пропустит экземпляр, и ваш метод уничтожения будет выглядеть так

public function destroy (Booking $booking)
{
 $event = $booking->event();
 // Do something with related event
 // or vice versa
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...