如何在 Destroy 函数中删除具有多个参数的数据 - Laravel

Posted

技术标签:

【中文标题】如何在 Destroy 函数中删除具有多个参数的数据 - Laravel【英文标题】:How to delete data with multiple parameters in Destroy function - Laravel 【发布时间】:2019-10-24 15:00:14 【问题描述】:

如果user_idhymn_idfavourite_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(在路由中)甚至不存在甚至不匹配,它会删除所有列,它会删除所有列。

不胜感激,谢谢

【问题讨论】:

【参考方案1】:

您的删除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()

【讨论】:

@NoumanNazir 似乎您标记了不同的解决方案...确保您是正确的。与此一样...假设您有 5000 条记录...它可以遍历每条记录并一一删除。所以这不是一个好方法。【参考方案2】:

这样做

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);

【讨论】:

以上是关于如何在 Destroy 函数中删除具有多个参数的数据 - Laravel的主要内容,如果未能解决你的问题,请参考以下文章

如何在具有多个参数的自定义函数中使用 mutate

Excel:如何在 excel 中转义逗号以在另一个函数(具有多个参数)内传递一个函数(具有多个参数)

如何在python中映射具有多个参数的函数

具有多个同名参数的函数如何工作?

具有多个参数的函数

如何从具有用户类参数的向量中删除元素?