]> _ Git - cubist_cms-back.git/commitdiff
#7818 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 18 Nov 2025 18:28:14 +0000 (19:28 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 18 Nov 2025 18:28:14 +0000 (19:28 +0100)
src/app/Magic/Models/CubistMagicAbstractModel.php

index dc5b9f6bb97ed4248f3d849f30d585baf703864c..f6445fe97b64d23de15a312ceb7f79f8722caf1e 100644 (file)
@@ -81,6 +81,7 @@ class CubistMagicAbstractModel extends Model implements HasMedia
     protected static $_ownerAttribute = null;
 
     protected $_syncDbSchema = true;
+    protected $_uniqueKeys = [];
 
     protected $_baseController = CubistMagicController::class;
 
@@ -570,6 +571,7 @@ class CubistMagicAbstractModel extends Model implements HasMedia
 
         }
 
+
         $table->setPrimaryKey([$this->primaryKey], 'pk_' . $this->table);
         foreach ($this->_fields as $field) {
             if ($field instanceof UnstoredField) {
@@ -586,6 +588,10 @@ class CubistMagicAbstractModel extends Model implements HasMedia
             $table->addColumn($fakeColumn, 'text', ['notnull' => false]);
         }
 
+        foreach ($this->_uniqueKeys as $name => $columns) {
+            $table->addUniqueConstraint($columns, $name);
+        }
+
         return $table;
     }
 
@@ -1189,6 +1195,16 @@ class CubistMagicAbstractModel extends Model implements HasMedia
         return $saved;
     }
 
+    public function addUniqueKey($fields, $name = null)
+    {
+        if (!is_array($fields)) {
+            $fields = [$fields];
+        }
+
+        $name = 'unique_' . join('_', $fields);
+        $this->_uniqueKeys[$name] = $fields;
+    }
+
     /**
      * @param $uploadedFile UploadedFile|\SplFileInfo
      * @param $attribute string
@@ -1381,4 +1397,5 @@ class CubistMagicAbstractModel extends Model implements HasMedia
         stop_measure($measure_name);
         return $res;
     }
+
 }