如何在 Destroy 函数中删除具有多个参数的数据 - Laravel
How to delete data with multiple parameters in Destroy function - Laravel
如果 user_id
和 hymn_id
与 favourite_list
table[= 匹配,我想删除最喜欢的列表 table 的列18=]
这是我的删除路线:
Route::resource('fav_hymns', 'Api\favouriteController');
Route::delete('fav_hymns/{user_id}/{hymn_id}/', 'Api\favouriteController@destroy');
和资源 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_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()
.
这样做
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);
}
如果 user_id
和 hymn_id
与 favourite_list
table[= 匹配,我想删除最喜欢的列表 table 的列18=]
这是我的删除路线:
Route::resource('fav_hymns', 'Api\favouriteController');
Route::delete('fav_hymns/{user_id}/{hymn_id}/', 'Api\favouriteController@destroy');
和资源 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_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()
.
这样做
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);
}