我正在做简单的增删改查,如果 user_id
和 hymn_id
与 favourite_list
表中的匹配,我想删除收藏列表表的列
这是我的删除路线:
Route::resource('fav_hymns', 'Api\favouriteController');
Route::delete('fav_hymns/{user_id}/{hymn_id}/', 'Api\favouriteController@destroy');
以及我在资源favouriteController中的“销毁”功能
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_id
匹配并且 $hymn_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()
。
关于mysql - 如何在 Destroy 函数中删除具有多个参数的数据 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56522511/