Database
Laravel 8
Laravel 9
Laravel 10
Laravel 11
Laravel 12
Foreign Key Constraint Violation in Laravel - Fix
This error occurs when trying to insert a foreign key value that doesn't exist in the parent table.
The Error
Error Message
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row
Common Causes
- 1 Referenced parent record doesn't exist
- 2 Wrong foreign key value provided
- 3 Parent record deleted before child insertion
- 4 Migration order issues creating tables
Solutions
1
Ensure parent record exists first
PHP
$user = User::findOrFail($userId);
Post::create([
'title' => 'My Post',
'user_id' => $user->id,
]);
2
Add validation for foreign key
PHP
$request->validate([
'user_id' => 'required|exists:users,id',
'category_id' => 'required|exists:categories,id',
]);
3
Use cascade on delete in migration
PHP
$table->foreignId('user_id')
->constrained()
->onDelete('cascade');
4
Set null on delete for optional relationships
PHP
$table->foreignId('category_id')
->nullable()
->constrained()
->nullOnDelete();
Need Help With Your Laravel Project?
I specialize in building custom Laravel applications, process automation, and SaaS development. Whether you need to eliminate repetitive tasks or build something from scratch, let's discuss your project.
About Hafiz
Senior Full Stack Developer. I build production software with Laravel, Filament, Vue, and AI integrations, and write about the real decisions behind shipping it.
Get in touch →