首页 文章

Laravel雄辩删除

提问于
浏览
0

你好寻找助手,如何理解Laravel Eloquent模型 . 我需要删除User by Id,但我有表Main_info,Personal_info,Holidays,other_info,fm_day,oth_daysoff . 在他们所有我插入UserId,我需要从所有表中删除选定的UserId?也许有人可以帮助我如何使用Laravel Eloquent模型做到这一点?这是我的删除提交按钮和帖子方法的视图:

<div class="container">
<div class="row">

    <div class="col">
        <div class="card">
            <div class="card-head-man">
                <span>Filter type: </span>&nbsp;
                <a href="javascript:void(0)" class="btn btn-secondary btn-sm">Position</a>&nbsp;
                <a href="javascript:void(0)" class="btn btn-secondary btn-sm">Active/No</a>&nbsp;
                <a href="javascript:void(0)" class="btn btn-secondary btn-sm">Employment type</a>
                <a href="javascript:void(0)" class="btn btn-secondary btn-sm">Location</a>
            </div>
        </div>
    </div>

    <div class="col-12">
        <div class="card">
            <div class="card-header">
                <h3 class="card-title">List of employees</h3>
            </div>

            <div class="table-responsive">
                <table class="table card-table table-vcenter text-nowrap">
                    <thead>
                    <tr>
                        <th class="w-1"><a href="#" class="sort-act">ID<span class="caret"></span></a></th>
                        <th><a href="#" class="sort-act">First Name<span class="caret"></span></a></th>
                        <th>Last Name</th>
                        <th>Position</th>
                        <th>Active/no</th>
                        <th>Employment type</th>
                        <th>Location</th>
                        <th></th>
                        <th></th>
                    </tr>
                    </thead>

                    <tbody>
                    @foreach($allData as $data)


                        <tr>
                        <td><span class="text-muted">{{ $data->id }}</span></td>
                        <td>{{ $data->first_name }}</td>
                        <td>
                            {{ $data->last_name }}
                        </td>
                        <td>
                            {{ $data->position }}
                        </td>
                        <td>
                            {{ $data->employment_type }}
                        </td>
                        <td>
                            <span class="status-icon bg-success"></span> Active
                            <span class="status-icon bg-danger"></span> No
                        </td>
                        <td>{{ $data->location }}</td>

                        <td class="text-right">
                            <a href="javascript:void(0)" class="btn btn-secondary btn-sm">Manage</a>
                            <div class="dropdown">
                                <form action="/deleteFromHome" method="post">
                                    {{csrf_field()}}
                                    <input style="display: none;" type="text" name="deleteUserId" class="form-control" id="inputName3" value="{{ $data->id }}">
                                    <button type="submit" class="btn btn-secondary btn-sm">Delete</button>
                                </form>
                            </div>
                        </td>
                        <td>
                            <a class="icon" href="javascript:void(0)">
                                <i class="fe fe-edit"></i>
                            </a>
                        </td>
                    </tr>
                    @endforeach
                    </tbody>
                </table>
            </div>
        </div>

</div>

这是我的控制器我现在是怎么做的:

public function deleteUserFromHome(Request $req)
{
    $userId = $req->input('deleteUserId');

    OtherInfo::where('id', $userId)->delete();
    OthDaysInfo::where('id', $userId)->delete();
    HolidaysInfo::where('id', $userId)->delete();
    FMdaysInfo::where('id', $userId)->delete();
    PersonalInfo::where('id', $userId)->delete();
    PersonalInfo::where('id', $userId)->delete();
    MainInfo::where('id', $userId)->delete();

    return redirect('home');
}

也许有一些更好的方法可以删除所有表中关于所选userId的所有数据?我需要一些例子如何使用函数HasMany或其他一些东西来删除Laravel Eloquent模型?

1 回答

  • 1

    您可以在创建表迁移时使用 ->onDelete('cascade') . 例如,

    // consider a sample migration below for a table with a foreign key on your users table
    Schema::create('main_info', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id');
        $table->foreign('user_id')
              ->references('id')
              ->on('users')
              ->onDelete('cascade');
        $table->timestamps();
    });
    

    然后您可以轻松删除指定的用户,Laravel将负责删除它的子记录 .

    $user = User::find($id);
    $user->delete(); // this will also delete any record for this user on main_info table
    

    Read more here

相关问题