From ec0e8f0ad0829eff0d80481c105c54e995e17e79 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 18 Nov 2025 19:28:14 +0100 Subject: [PATCH] #7818 @0.5 --- .../Magic/Models/CubistMagicAbstractModel.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/app/Magic/Models/CubistMagicAbstractModel.php b/src/app/Magic/Models/CubistMagicAbstractModel.php index dc5b9f6..f6445fe 100644 --- a/src/app/Magic/Models/CubistMagicAbstractModel.php +++ b/src/app/Magic/Models/CubistMagicAbstractModel.php @@ -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; } + } -- 2.39.5