Mysql 如何删除Destroy function-Laravel中的多参数数据

Mysql 如何删除Destroy function-Laravel中的多参数数据,mysql,laravel,orm,eloquent,laravel-5.8,Mysql,Laravel,Orm,Eloquent,Laravel 5.8,我正在制作简单的crud,如果user\u id和hymn\u id与favorite\u list表中的匹配,我想删除Favorite list表的列 以下是我的删除路线: Route::resource('fav_hymns', 'Api\favouriteController'); Route::delete('fav_hymns/{user_id}/{hymn_id}/', 'Api\favouriteController@destroy'); 以及我在资源收藏夹控制器中的“销毁”功能

我正在制作简单的crud,如果
user\u id
hymn\u id
favorite\u list
表中的匹配,我想删除Favorite list表的列

以下是我的删除路线:

Route::resource('fav_hymns', 'Api\favouriteController');
Route::delete('fav_hymns/{user_id}/{hymn_id}/', 'Api\favouriteController@destroy');
以及我在资源收藏夹控制器中的“销毁”功能

public function destroy($user_id,$hymn_id)
{

    $favourite_list = favourite_list::where('user_id','=',$user_id, 'AND', 'hymn_id', '=', $hymn_id)->delete();


    if (!$favourite_list) {
        return response()->json([
            'success' => false,
            'message' => 'Error: List not found'
        ], 400);
    }

    if ($favourite_list) {
        return response()->json([
            'success' => true
        ]);
    } else {
        return response()->json([
            'success' => false,
            'message' => 'List could not be deleted'
        ], 500);
    }
}
但问题是,如果
$user\u id
匹配且
$hymn\u id
(路由中)甚至不存在且不匹配,它将删除所有列

非常感谢您的帮助,谢谢您的删除
where()
条件不正确。你应该试试看

try{

 favourite_list::where('user_id', $user_id)
                            ->where('hymn_id', $hymn_id)
                            ->delete();

} catch(\Exception $e){
    return response()->json([
            'success' => false,
            'message' => 'List could not be deleted'
    ], 500);
}


 return response()->json([
     'success' => true
 ]);
每个条件应包装在不同的
where()
下。如果您想要SQL格式。。。试着用whereRaw()做这样的事

public function destroy($user_id,$hymn_id)
{

    $favourite_lists =favourite_list::where('user_id', $user_id)
                            ->where('hymn_id', $hymn_id)->get();

    foreach($favourite_lists as $favourite_list)
    {
      $favourite_list->delete();
    }
    return response()->json("records deleted",200);
}

@Noumanazir看起来你标记了不同的解决方案。。。确保你是正确的。就这样。。。假设你有5000条记录。。。它可以循环遍历每条记录并逐个删除。因此,这不是一个好办法。