I'm struggling to work out how the controller knows what to post where. I have come to the conclusion that for this way to work, you need the "name" fields in your form to match the column names in your database.
Edit: Assuming the for this way to work statement. As pointed below, It's not mandatory to always match these.
Basically, only the inputs with the name attribute are being sent to the server. Inside the controllers, we can access the input via the Illuminate\Http\Request object. In your example, that's achieved via the request() helper.