Mysql 如何删除Destroy function-Laravel中的多参数数据
我正在制作简单的crud,如果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'); 以及我在资源收藏夹控制器中的“销毁”功能
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条记录。。。它可以循环遍历每条记录并逐个删除。因此,这不是一个好办法。