Przemek Wojtas Przemek Wojtas - 1 year ago 71
PHP Question

Checkbox value to database in laravel

On page skilledHandyman, I have a handyman_id stored from a previous page and a form with checkboxes with list of jobs available, what I want to do is to update foreign key job_id in "handymen" table using whatever checkbox has been selected by taking job_id from table "jobs". Value of job_id is in the checkbox as it can be seen in the code, it just has to be taken and update a job_id foreign key within handyman. I have set up relationships hasMany with jobs table and belongsTo from job to handyman. This is what I have at the moment but it obviously doesn't work as intended.


@section('skilledHandyman', 'Add Job')
<li><a href="{{url('assignjob')}}">Assign job</a></li>
<h1>Handyman details</h1>
<li>First Name:{{$skilledHandyman->first_name}}</li>
<li>Last Name:{{$skilledHandyman->last_name}}</li>

<form action="{{url('skilledHandyman')}}" method="POST">
{{ csrf_field() }}
@foreach ($jobs as $job)
<input type='checkbox' value='{{$job->id}}' name='jobs[]'/>
<input type="submit" name="submitBtn" value="Assign Job">

function jobassign(Request $request, $id)
$job = Handyman::where('handyman_id', $handymanId)->update(['job_id', $request->job_id]);
return redirect()->back()->with('status', trans('Handyman has been successfully assigned to this job.'));
function skilledHandyman($handymanId)
$skilledHandyman = Handyman::find($handymanId);
$jobs = Job::all();
return view('layouts/skilledHandyman', ['jobs' => $jobs, 'skilledHandyman' => $skilledHandyman]);


Route::group(['middleware' => ['web']], function () {

Route::get('home', 'HandymanController@home');

Route::get('search', 'HandymanController@search');

Route::get('details/{skill}', 'HandymanController@details');

Route::get('skilledHandyman/{handymanId}', 'HandymanController@skilledHandyman');

Route::post('jobassign', 'HandymanController@jobassign');

//Route::get('assignjob/{handymanId}', 'HandymanController@assignJob');

Route::get('addjob', 'HandymanController@addJob');

Route::post('addjform', 'HandymanController@addjForm');

Route::get('jobs', 'HandymanController@jobs');

Route::get('jobsdetails/{jobId}', 'HandymanController@jobsdetails');

Route::get('deletejob', 'HandymanController@deleteJob');

Route::post('deletejform', 'HandymanController@deletejForm');


public function up()
Schema::create('handymen', function (Blueprint $table) {



* Reverse the migrations.
* @return void
public function down()
Schema::table('handymen', function (Blueprint $table) {

If any other files are needed I will update the page when requested, please help me here

Answer Source

Change this

 <input type='checkbox' value='{{$job->id}}' name='jobs[]'/>


  <input type='checkbox' value='{{$job->id}}' name='job_id'/>
 <input type="hidden" name="handymanid" value="{{$skilledHandyman->id}}">

and in the controller

    function jobassign(Request $request)
         $job_id = $request->input('job_id');
         $handymanId = $request->input('handymanid');
        $job = Handyman::where('id', $handymanId)->update(['job_id', $job_id]);
        return redirect()->back()->with('status', trans('Handyman has been successfully assigned to this job.'));

in ur routes file change the form action

<form action="{{url('jobassign')}}" method="POST">
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download