I need to make a composite constraint in Laravel, which only consider non soft-deleted rows. So if the entity was deleted, the deleted_at
is not null
and data_1
, data_2
, data_3
, data_4
, data_5
can be inserted again.
Best I could come up with is this (table
and column
names were defined in previous migrations):
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->unique(['data_1', 'data_2', 'data_3', 'data_4', 'data_5'])
->whereNull('deleted_at');
});
}
But it doesn't work. The constraint applies even if deleted_at
is not null
.
I've been looking through other post with similar issues but their solutions have different approaches non related with a migration.