jeudi 8 novembre 2018

Updating several items at once in Laravel5

Trying to update several items using a foreach loop in Laravel5. In the view template I have a number of different select menus containing options for packages. Creating them using this logic works fine, but when I try to use similar logic while updating the items it does nothing for some reason.

View template:

{!! Form::open(['action' => ['Admin\PackageController@update', $package->Id], 'method' => 'put']) !!}
    @csrf
    <div class="form-group">
        
        
    </div>
    <div class="form-group">
        
        
    </div>
    <div class="form-group">
        
        <select selected="" class="form-control" id="university" name="university">
            <option value="11">Home</option>
        </select>
    </div>
    <div class="form-group">
        @include('admin.package.includes.partial2', ['programme' => $programme])
    </div>
    <div class="form-group">
        
        <select selected="" class="form-control" id="partner_university" name="partner_university">
            <option value=""></option>
        </select>
    </div>
    <div id="pu-course">
        <input type="button" id="add-pu-course" class="btn btn-success" value="Add">
        <div class="form-group">
            @include('admin.package.includes.partial3', ['course' => $course])
        </div>
    </div>
    @foreach($package->courses as $p_course)
        <div class="form-group">
            <input type="hidden" name="pid" value="">
            <select selected="" class="form-control pu_course" id="pu_course" name="course[]">
                <option value=""></option>
                @foreach($pu_course as $key)
                    <option value=""></option>
                @endforeach
            </select>
        </div>
    @endforeach
    <div class="form-group">
        
    <input type="range" min="0" max="10" step="1" name="match_value" onchange="change(this.value)" value="">
    <span id="slider"><span>
    </div>
    
{!! Form::close() !!}

Controller method:

public function update(Request $request, $id)
    {

        $home_university_id = $request->input('university');
        $programme_id = $request->input('programme');
        $partner_university_id = $request->input('partner_university');

        $home_university_name = DB::table('university')->where('Id', $home_university_id)->pluck('name');
        $programme_name = DB::table('programme')->where('Id', $programme_id)->pluck('title');
        $partner_university_name = DB::table('university')->where('Id', $partner_university_id)->pluck('name');

        $package = Package::find($id);
        $package->title = $request->input('title');
        $package->description = $request->input('description');
        $package->home_university = $home_university_name[0];
        $package->match_value = $request->input('match_value');
        $package->programme = $request->input('programme');
        $package->partner_university = $partner_university_name[0];
        $package->programme_Id = $programme_id;
        $package->university_Id = $home_university_id;
        $package->pu_Id = $partner_university_id;
        $package->save();

        $package_id = DB::table('package')->where('title', $package->title)->pluck('Id');
        dd(count($request->course));
        foreach($request->course as $key) {
            $course_name = DB::table('course')->where('Id', $key)->pluck('name');

            $data = array('Package_Id' => $package_id[0], 
            'Course_Id' => $key, 
            'University_Id' => $home_university_id[0], 
            'Package_title' => $package->title, 
            'Course_name' => $course_name[0], 
            'Pu_Id' => $partner_university_id);

            DB::table('course_package')
                    ->where('Package_Id', '=', $id)
                    ->update($data);


            /*$data = array('Package_Id' => $package_id[0], 'Course_Id' => $key, 'University_Id' => $home_university_id[0], 
            'Package_title' => $package->title, 
            'Course_name' => $course_name[0], 
            'Pu_Id' => $partner_university_id);

            Course_package::insert($data);*/   
        }

        return redirect('home/package');
    }

The items in the foreach loop will not update while the rest of the properties specified before the loop update with no problems. Don't get any errors, it just doesn't do anything.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire