I’m new to learning Laravel 11, and I’m stuck with the (erno: 150 “Foreign key constraint is incorrectly formed,”) and despite trying various suggestions I’ve seen, I still can’t resolve it. Could you please help me identify where I went wrong and how to fix it?
This is the expenses table
public function up(): void
{
Schema::create('expenses', function (Blueprint $table) {
$table->id();
$table->increments('category_id');
$table->foreign('category_id')->references('id')
->on(table:'categories')->onDelete('cascade')->onUpdate(action:'cascade');
$table->decimal('amount',8, 2);
$table->date('entry_date');
$table->timestamps();
$table->engine = 'InnoDB';
});
}
This is the categories table
public function up(): void
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('category_name');
$table->string('description')->nullable();
$table->timestamps();
});
}
I need the foreign key category_id in the expenses table to be connected to the categories table. When I update a category, I want the category_id in the expenses table to also update, and the same goes for deletion. If a specific category_name is deleted, I want the corresponding records in the expenses table to be removed as well.