请问一下 WhereIn 如何才可以触发 deleting 关联 进行批量删除数据呢?

请问一下 WhereIn 如何才可以触发deleting关联 连带批量删除数据呢?
试过find()方法但是没用只删除了一个数据,因为是选中批量删除
或者有别的方法可以批量删除 并且触发deleting关联 连带批量删除数据
谢谢

这个文件是:Controller
    public function del(Request $request)
    {
        $delids = $request->input('delid');

        $influencers = Influencers::whereIn('id', $delids);
        $influencers->delete();
        return back();
    }
以下是表单页面
<form  action="{{url('admin/influencers/del')}}"  method="post">
    <table>
    <tbody>
    @foreach($data as $v)
        <tr>
        <td><input  type="checkbox"  name="delid[]"  value="{{$v->id}}"></td>
        <tr>
    @endforeach
    <tbody>
</table>
</form>
以下是: Route
Route::post('influencers/del', '\App\Admin\Controllers\InfluencersController@del');
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

批量删除不会将符合条件的行数据实例化成 Model,而是直接执行了 delete fromuserswhereidin (1, 2,3 ...);,所以也就无法触发相应的事件,只能自己在控制器里实现:

DB::table('posts')->whereIn('user_id', [1, 2, 3])->delete();
DB::table('users')->whereIn('id', [1, 2, 3])->delete();

或者使用模型 的 delete() 方法,逐条删除!

$users->whereIn('id', [1, 2, 3])->get();
foreach ($users as $user) {
    $user->delete();
}
4年前 评论
讨论数量: 5

批量删除不会将符合条件的行数据实例化成 Model,而是直接执行了 delete fromuserswhereidin (1, 2,3 ...);,所以也就无法触发相应的事件,只能自己在控制器里实现:

DB::table('posts')->whereIn('user_id', [1, 2, 3])->delete();
DB::table('users')->whereIn('id', [1, 2, 3])->delete();

或者使用模型 的 delete() 方法,逐条删除!

$users->whereIn('id', [1, 2, 3])->get();
foreach ($users as $user) {
    $user->delete();
}
4年前 评论

Influencers::destroy($delids);

4年前 评论
Zhiyi (楼主) 4年前

User::whereIn()->get()->each->delete()

就是,循环单个模型删除,注意下性能是否可以接受。

4年前 评论
h-o-o 3年前
largezhou (作者) 3年前

模型中定义观察者

protected static function boot()
{
  parent::boot();
  static::deleting(function ($model) {
         $model->atrributes()->delete();
   });
}
4年前 评论

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