【问题标题】:How delete array of items?如何删除项目数组?
【发布时间】:2018-01-14 10:27:35
【问题描述】:

我有销毁功能:

public function destroy(Tag $tag)
{
    $tag->delete();
    return Response::json([], ResponseHttp::HTTP_OK);
}

如果前端发送一个 id 的帖子 - 一切正常。 但是如果前端发送帖子数组如何删除?

【问题讨论】:

  • 你可能想试试foreach() ?
  • 您将不得不创建另一个路由并(可能)创建另一个方法。请注意,如果您有任何用于删除模型的模型事件,您必须单独删除它们。
  • 我想你可能想阅读这个帖子:laracasts.com/discuss/channels/eloquent/…

标签: php laravel laravel-5 php-7


【解决方案1】:

试试看,如果你能得到 id 数组,那么你会删除它们

public function destroyArrayOfTag(array $tag){ //you can also use Request for getting post attributes

    Tag::whereIn('id',$tag)->delete();

    return Response::json([], ResponseHttp::HTTP_OK);
 
}

其中 $tag 是一个 id 数组。祝你好运

【讨论】:

    【解决方案2】:

    您还可以使用分隔符传递一个 id 数组。例如。逗号

    所以你的路线看起来像这样destroy/1,2,3,4

    然后在你的控制器中:

    public function destroy($ids)
    {
        Tag::destroy(explode(",",$ids));
        return Response::json([], ResponseHttp::HTTP_OK);
    }
    

    编辑:您正在使用DELETE 方法,所以您的网址看起来像这样api/tag/1,2,3

    【讨论】:

    • 返回 - [] 并没有删除。
    • 您使用的是资源路由/控制器还是自定义路由?你能提供你的前端代码吗?
    • Route::delete('/{tag}', 'TagController@destroy')->middleware('auth:api');
    • 应该可以。虽然你最好使用Route::delete('/tag/{id}'... 之类的东西,然后在tag/1,2,3 上使用DELETE 方法。我可以看看你的前端脚本吗?
    • 不,它仅适用于 API。
    【解决方案3】:

    我是通过过滤器来做的 -

    public function destroy()
        {
            Tag::filter(\Request::only(['filter']))->delete();
    
            return Response::json([], ResponseHttp::HTTP_OK);
        }
    

    【讨论】:

      【解决方案4】:

      也许您应该在 ajax 中添加一个数组变量。 像这样的例子:

          var data =[];
      

      然后将数组 post 获取到数据中。然后你就可以做这件事了:

          for(var i=0; i<data.length; i++)
          {
      
              $.ajax({
              url: your_path+'/destroy/'+data[i],
              type: 'GET',
              dataType: 'json',
              success:function(response) {
                               notify(1,"Your Response Message");
                          }
                      })
          }
      

      希望这会对您有所帮助。谢谢

      【讨论】:

      • 这不是一个理想的解决方案,因为这会创建多个 AJAX 调用。您需要做的是通过 AJAX 传递 id 数组,然后通过遍历每个在 destroy 函数上删除它们。
      猜你喜欢
      • 2021-10-19
      • 2016-09-07
      • 1970-01-01
      • 2016-10-30
      • 2012-02-20
      • 2021-08-15
      • 1970-01-01
      相关资源
      最近更新 更多