Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Raptor's avatar

Save multiple checkbox inputs with additional data to pivot table

I'm trying to assign licence categories with expiry date input for each category to a user. I'm working with Laravel 8 and Bootstrap 5.

Up to assigning categories to a user I'm ok. The lack of knowledge starts with saving that expiry date to additional column in pivot table.

So here's my form section where I collect necessary information:

<div class="mb-1"><strong>Assign user's driving licence categories:</strong></div>
@foreach($categories as $category)
	<div class="input-group mb-3">
		<div class="input-group-text" style="width: 6ch !important;">{{$category->name}}</div>
		<div class="input-group-text">
		<input class="form-check-input" type="checkbox" name="categories[]" value="{{$category->id}}">
		</div>
		<div class="input-group-text">Expiry date</div>
		<input class="form-control" type="date" name="expiry_date[]">
	</div>
@endforeach

And Controller:

public function store(Request $request)
{
        $request->validate([
            'first_name' => 'required',
            'last_name' => 'required',
            'email' => 'required',
            'roles' => 'required',
            'categories' => 'required',
            'expiry_date' => 'required_with:categories'
        ]);
                
        $user = User::create($request->except(['roles', 'categories', 'expiry_date']))
            ->drivingLicenceCategory()->sync($request->categories);

	return redirect()->route('users.index')->with('success', 'User added successfully.');
}

I have no idea how to assign expiry date to each category. Also what if category of id = 1 is not selected? The second array of expiry_date is returning null in position [0] :(

Hope someone can help and thank you for your time spent helping me :)

0 likes
2 replies
Charizard's avatar
Level 5

This is what i would do:

$user = User::create($request->except(['roles', 'categories', 'expiry_date']));

foreach($request->categories as $key=>$category_id){
	$user->drivingLicenceCategory()->attach($category_id, ['expiry_date' => $request->expiry_date[$key]]);
}

Let me know if that solves your issue.

Please or to participate in this conversation.