【问题标题】:How to delete data with multiple parameters in Destroy function - Laravel如何在 Destroy 函数中删除具有多个参数的数据 - 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(在路由中)甚至不存在甚至不匹配,它会删除所有列,它会删除所有列。

不胜感激,谢谢

【问题讨论】:

    标签: mysql laravel orm eloquent laravel-5.8


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-21
      • 2023-01-10
      • 2019-10-11
      • 2012-12-30
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多