Laravel destroy 多删除和单删除选择

laravel中的一个destroy代码

public function destroy($id)
{
    //.......

    $this->model->destroy($id);

    // ........
}

关于destroy中有如下思考,此种方法是对于单删除,
但对于多删除,考虑如下办法:
1、$id 可切换成 1,2,3,4类似格式,然后function 中处理成数组,删除
2、POST提交至function $_POST['ids'],但destroy中的$id,则是名存实亡,因为根本不会用到$id。

不知道大家平时都是怎么觖决的,好纠结

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 11

直接DB::whereIn的路过

8年前 评论

destroy 可以直接传数组和多个id的,没看源码吗?

$ids = is_array($ids) ? $ids : func_get_args();
8年前 评论

@oustn ,你可能误会我的意思了,我不是说$this->model->destroy($id),我是说public function destroy($id)
这里面的id

8年前 评论

@hiword 你也直接这样判断,把参数转化成数组,不是一个原理吗

public function destroy($ids)
{
    //.......
    $ids = is_array($ids) ? $ids : func_get_args();
    $this->model->destroy($ids);

    // ........
}
8年前 评论

@oustn 感谢你的回答,这些方法我都知道,但是我觉得不够优雅,我想寻找下有没有更加优雅的办法

8年前 评论

@oustn 天生强迫症,改不了了

8年前 评论

@hiword 不知道你的想法是啥,是想再写个批量删除的方法吗?但是看 laravel 的源码,很多都是这样处理的,不会分开写两个方法,一个处理单个删除,一个处理多个删除吧,无非就是参数不同而已,直接在方法里面加个参数判断,甚至还可以加个像你说的“1,2,3,4”这种格式的吧

$ids = is_array($ids) ? $ids : ( is_string($ids) ?explode (',',$ids) :func_get_args());

"2、POST提交至function $_POST['ids'],但destroy中的$id,则是名存实亡,因为根本不会用到$id。" 看不懂啥意思

8年前 评论

@oustn 2. 他的意思可能是 $id 这个参数用不到了

6年前 评论

:sparkler: :dolls: :dolls: :dolls:

5年前 评论

destroy无法批量删除,传入1,2,只会删除1是什么原因?

4年前 评论

如果我根据日期范围进行删除,该用什么办法呢

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!