PluginProbe
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler / 1.6.6
FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler v1.6.6
1.6.6 1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.4 1.5.5 1.5.3 1.5.2 1.5.1 1.5.0 1.4.2 1.4.1 1.4.0 1.3.28 1.3.27 1.3.26 1.3.25 1.3.23 1.3.22 1.3.21 1.3.20 1.3.19 All 49 releases
← All changes | database/Migrations/AttributeObjectRelationsMigrator.php +18 -1 1.4.2 → 1.6.6 View file →
@@ -1,8 +1,9 @@
1 1 <?php
2 2
3 3 namespace FluentCart\Database\Migrations;
4 4
5 +use FluentCart\Database\Migrations\Migrator;
5 6 use FluentCart\Framework\Database\Schema;
6 7
7 8 class AttributeObjectRelationsMigrator extends Migrator
8 9 {
@@ -20,7 +21,23 @@
20 21 `updated_at` DATETIME NULL,
21 22
22 23 INDEX `{$indexPrefix}_group_id_idx` (`group_id` ASC),
23 24 INDEX `{$indexPrefix}_term_id_idx` (`term_id` ASC),
24 - INDEX `{$indexPrefix}_obj_id_idx` (`object_id` ASC)";
25 + INDEX `{$indexPrefix}_obj_id_idx` (`object_id` ASC),
26 +
27 + UNIQUE INDEX `{$indexPrefix}_obj_grp_term_unique` (`object_id` ASC, `group_id` ASC, `term_id` ASC)";
28 + }
29 +
30 + public static function migrated()
31 + {
32 + // Defensive guard so a missing relations table (e.g. dbDelta failed)
33 + // does not bubble up as "unexpected output during activation". The
34 + // dedupe + UNIQUE retry logic itself lives in AttributeTermsMigrator
35 + // because it depends on the term-level cleanup that runs in that
36 + // hook. Keeping this empty stub here surfaces the migrator's own
37 + // post-migration phase so future per-table maintenance has a
38 + // dedicated place to grow without breaking the layering.
39 + if (!Schema::hasTable(static::$tableName)) {
40 + return;
41 + }
25 42 }
26 43 }