Laravel - Store multiple checkbox form values in database

25,067

If you have multiple checkboxes like this:

<input type="checkbox" name="services" value="1"/>
<input type="checkbox" name="services" value="2"/>
<input type="checkbox" name="services" value="3"/>

It will send's only one value to server, cause name must be unique. Workaround is to use array inputs:

<input type="checkbox" name="services[]" value="1"/>
<input type="checkbox" name="services[]" value="2"/>
<input type="checkbox" name="services[]" value="3"/>

Then you can grab that input in controller and do something like this:

$services = $request->input('services');
foreach($services as $service){
 orders::create($service);
}

Validation of arrays in Laravel:

https://laravel.com/docs/5.7/validation#validating-arrays

More about input arrays:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#Handling_multiple_checkboxes

How to get form input array into PHP array

Share:
25,067
Admin
Author by

Admin

Updated on March 03, 2020

Comments

  • Admin
    Admin about 4 years

    So I've got this code

    View:

    <div id="checkboxes">
                             <input type="checkbox" class="checkbox" name="services" value="{{ $service->id }}" id="{{ $service->id }}" />
                             <label class="whatever" for="{{ $service->id }}"><p class="serv-text"> {{ $service->service_name }} + ${{ $service->price }} </p></label>
                                 </div>

    Controller:

      public function store(Request $request)
        {
           orders::create(Request::all());
            return 'test';
        }

    Model:

    class orders extends Model
    {
        protected $fillable = [
        'category', 
        'services',
        'total_price',
        'user_id',
        'status',
        'user_id'];
    }

    When I try to submit the form, in the database at services there is only one number even if I checked multiple boxes when I submitted the form. I've tried to find on google a solution but nothing.