A user reports “the status field isn’t saving.” You need to find where that field is stored in the database. Here’s the fastest way to trace from frontend label to backend column in a Laravel + Vue.js app.
The Workflow
1. Start with the label text
User says “status field.” Search your Vue components for that label:
grep -r "Status" resources/js/components/
Find the component:
<template>
<div>
<label>Status</label>
<select v-model="form.order_status">
<option value="pending">Pending</option>
<option value="completed">Completed</option>
</select>
</div>
</template>
2. Check the v-model binding
v-model="form.order_status" tells you the property name. Check what gets sent to the backend:
// In the same component or parent
methods: {
submitForm() {
axios.post('/api/orders', this.form)
.then(/* ... */)
}
}
The POST payload includes order_status: 'pending'.
3. Match to the Laravel controller
Check your API route. The request hits OrderController@store:
public function store(Request $request)
{
$validated = $request->validate([
'order_status' => 'required|string',
// ...
]);
Order::create($validated);
}
4. Check the database column
In most Laravel apps, the input name matches the column name. Verify in your migration or model:
Schema::create('orders', function (Blueprint $table) {
$table->id();
$table->string('order_status'); // β Found it
// ...
});
Full path: Status label β form.order_status (Vue) β order_status (request) β order_status (column)
When Names Don’t Match
Sometimes frontend and backend use different names:
<!-- Frontend: display_name -->
<input v-model="form.display_name">
// Backend renames it
public function store(Request $request)
{
User::create([
'name' => $request->input('display_name'),
]);
}
Check $fillable or create() calls to see the mapping.
Bonus: Use Browser DevTools
Open Network tab, submit the form, inspect the POST payload. You’ll see exactly what key names are sent:
{
"order_status": "pending",
"customer_email": "[email protected]"
}
Match those keys to your database columns.
Why This Matters
When debugging form issues, you need the column name to:
- Check database constraints (NOT NULL, unique, etc.)
- Read logs filtered by that field
- Write queries to inspect actual data
- Verify fillable/guarded settings
This workflow gets you from “the status field” (user language) to orders.order_status (database reality) in under a minute.
Leave a Reply