如何删除项目数组?

时间:2017-08-07 07:24:24

标签: php laravel laravel-5 php-7

我有破坏功能:

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

如果前端发送一个帖子的ID - 一切都好。 但如果前端发送数组的帖子怎么删除?

5 个答案:

答案 0 :(得分:0)

您还可以使用分隔符传递一组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

答案 1 :(得分:0)

尝试一下,如果你可以得到一组id,那么你将把它们删除为

public function destroyArrayOfTag($tag[]=''){ //you can also use Request for getting post attributes

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

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

}

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

答案 2 :(得分:0)

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

find()函数将通过PK查找多个记录,并在其上调用delete()将删除这些记录。您的数组必须看起来像(来自文档)$flights = App\Flight::find([1, 2, 3]);,其中1,2,3是PK。这称为Indexed array

相关:https://laracasts.com/discuss/channels/eloquent/return-value-of-delete-method

答案 3 :(得分:0)

我是通过过滤器做的 -

public function destroy()
    {
        Tag::filter(\Request::only(['filter']))->delete();

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

答案 4 :(得分:-1)

也许您应该在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");
                    }
                })
    }

希望这会对你有所帮助。感谢&#39; S