Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用laravel删除透视表中的单行_Php_Laravel_Eloquent_Detach - Fatal编程技术网

Php 如何使用laravel删除透视表中的单行

Php 如何使用laravel删除透视表中的单行,php,laravel,eloquent,detach,Php,Laravel,Eloquent,Detach,我想删除透视表中的一行数据。我没有得到任何错误,但当尝试点击按钮。它没有将我重定向到任何地方,因此无法执行删除功能 在上图中,我想删除user\u id=3 我的情况是,用户突然无法进入甚至\u id=6,因此用户希望删除/取消连接事件 路线 Route::get('/user/event/{event}', 'HomeController@destroy')->name('user.event.destroy'); blade @foreach ($events as $event)

我想删除透视表中的一行数据。我没有得到任何错误,但当尝试点击按钮。它没有将我重定向到任何地方,因此无法执行删除功能

在上图中,我想删除
user\u id=3
我的情况是,用户突然无法进入
甚至\u id=6
,因此用户希望删除/取消连接事件

路线

Route::get('/user/event/{event}', 'HomeController@destroy')->name('user.event.destroy');
blade

@foreach ($events as $event)
    <tr>
       <td>{{$loop->index +1 }}</td>
       <td>{{$event->event_name}}</td>
       <td>{{$event->event_date}}</td>
       <td>
        <form method="POST" action="{{ route('user.event.destroy',$event)}}">
          @csrf 
          @method('DELETE')
           <a class="btn btn-danger">Unjoined!</a> 
         </form>
         </td>
    </tr>
@endforeach
事件模型

 public function users()
    {
        return $this->belongsToMany(User::class,'event_user','event_id','user_id');
    }
public function events()
    {
        return $this->belongsToMany(Event::class,'event_user','user_id','event_id');
    }
用户模型

 public function users()
    {
        return $this->belongsToMany(User::class,'event_user','event_id','user_id');
    }
public function events()
    {
        return $this->belongsToMany(Event::class,'event_user','user_id','event_id');
    }

为了简单起见,我正在调整控制器方法以使用路由模型绑定:

public function destroy(Event $event)
{
    Auth::user()->events()->detach($event);
    // or from the other side of the relationship
    // $event->users()->detach(Auth::user());

    return redirect()->back()->with('success', 'Deleted.');
}
如注释中所述,如果要使用
delete
HTTP方法,则需要将路由调整为
route::delete
,即表单通过
@method('delete')
blade指令进行欺骗

旁注:

Auth::user()

$user = Auth::user();

你试过你的代码了吗?有什么特别的事情需要澄清吗?您的web.php路由是一个get方法,而不是post或delete
Unjoined
您必须将其更改为
删除
,因为这是您在表单中欺骗的方法。看起来您正在使用@method('delete'),所以我将使用Route::delete谢谢您,先生,我今天也从您和其他人那里学到了很多东西。我需要为此学习更多。谢谢:)事情很多,慢慢来,尽量了解你正在做的事情的背景:)