不能多次引用变量名“ id”

时间:2019-09-22 19:41:44

标签: php laravel

我需要通过子活动ID中的ID删除预订

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 :(得分:0)

您的路线有两个变量(event_id)和(booking_id),但是您的方法只有一个($ id) 使用您现有的路线(不遵循雄辩的工作方式)

web.php

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

刀片

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

控制器

public function destroy ($booking_id, $event_id)

您可能想在这里查看laravel关系: https://laravel.com/docs/6.x/eloquent-relationships

将使您的生活更加轻松,因此雄辩的说法将通过一个实例,并且您的destroy方法将如下所示

public function destroy (Booking $booking)
{
 $event = $booking->event();
 // Do something with related event
 // or vice versa
}

答案 1 :(得分:0)

这些ID是两个单独的ID吗?还是共享相同的ID?

如果它们是两个单独的ID,则需要为它们提供两个明显不同的名称,例如booking_id和event_id,然后您就可以根据需要在Controller中访问它们。

 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)
    {
        ...
    }