Multiple row insertion in MySQL DB from Dependency Dropdown

Viewed 39

I'm trying to insert all selected users from dependency dropdown for the admin user but something I am doing wrong here.

enter image description here

Below is my table structure: Table_Name: docrole

enter image description here

I need data to be inserted as follows:

enter image description here

Here is my code

Controller

public function DocumentRoleStore(Request $request)
    {
        $DocRoleModel = new Docrole;
        $DocRoleModel->deptid = $request->roledepartment;
        $DocRoleModel->accessto = $request->roleuser;
        $DocRoleModel->uploadby = $request->roleassignuser;
        $DocRoleModel->save();

        $rolesassign[] = $request->roleassignuser;
        foreach($rolesassign as $key=>$name)
        {
             Docrole::insert($key);
        }

return redirect()->back()->with('status','Role added successfully');

blade view

<div class="container mt-4">
        <form action="/document-role-data" method="post">
            @csrf
            <div class="row">
                <div class="col-lg-6 offset-lg-3 mb-3">
                    <select class="form-select form-control" name="roleuser">
                        <option selected>Select User</option>
                        @foreach ($usersdata as $item)
                            <option value="{{$item->username}}">{{$item->username}}</option>
                        @endforeach
                    </select>
                </div>
                <div class="col-lg-6">
                    <select class="form-select form-control" name="roledepartment" id="Role-Department">

                        <option selected>Select Department</option>
                        <option value="1">All Departments</option>
                        @foreach ($departmentDatas as $item)
                            <option value="{{$item->deptid}}">{{$item->deptname}}</option>
                        @endforeach
                    </select>
                </div>
                <div class="col-lg-6">
                    <select class="form-select form-control" id="employeelist" required multiple name="roleassignuser[]">
                        <option  selected="false">Select User</option>
                    </select>

                </div>

                <div class="col-lg-12">
                    <button type="submit" class="btn btn-primary float-right mt-4">Submit</button>
                </div>
            </div>
        </form>
    </div>
1 Answers

I believe your DocumentRoleStore() function should be like...

public function DocumentRoleStore(Request $request)
{
    foreach($request->roleassignuser as $roleUser) {
        Docrole::create([
            'deptid' => $request->roledepartmen,
            'accessto' => $request->roleuser,
            'uploadby' => $roleUser
        ]);
    }

    return redirect()->back()->with('status','Role added successfully');
}

Here I have used Create() method of Model class, which is requires mass assignment enabled in model. To enable mass assignment you can add following code to your Docrole class.

protected $fillable = ['deptid', 'accessto', 'uploadby'];

Related