diff --git a/CHANGELOG.md b/CHANGELOG.md index ea079941e..76b069517 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ a release. --- ## [Unreleased] +### Fixed +- Translatable: Ignore notInsertable columns in postPersist hook ## [3.16.1] ### Fixed diff --git a/src/Translatable/Mapping/Event/Adapter/ODM.php b/src/Translatable/Mapping/Event/Adapter/ODM.php index be64177ce..03e70d10c 100644 --- a/src/Translatable/Mapping/Event/Adapter/ODM.php +++ b/src/Translatable/Mapping/Event/Adapter/ODM.php @@ -139,9 +139,15 @@ public function insertTranslationRecord($translation) $data = []; foreach ($meta->getReflectionProperties() as $fieldName => $reflProp) { - if (!$meta->isIdentifier($fieldName)) { - $data[$meta->getFieldMapping($fieldName)['name']] = $reflProp->getValue($translation); + if ($meta->isIdentifier($fieldName)) { + continue; } + $fieldMappings = $meta->getFieldMapping($fieldName); + if (($fieldMappings['notInsertable'] ?? false) === true) { + continue; + } + + $data[$meta->getColumnName($fieldName)] = $reflProp->getValue($translation); } $insertResult = $collection->insertOne($data); diff --git a/src/Translatable/Mapping/Event/Adapter/ORM.php b/src/Translatable/Mapping/Event/Adapter/ORM.php index 923f60cdc..355e3ccce 100644 --- a/src/Translatable/Mapping/Event/Adapter/ORM.php +++ b/src/Translatable/Mapping/Event/Adapter/ORM.php @@ -195,11 +195,16 @@ public function insertTranslationRecord($translation) $data = []; foreach ($meta->getReflectionProperties() as $fieldName => $reflProp) { - if (!$meta->isIdentifier($fieldName)) { - $data[$meta->getColumnName($fieldName)] = $reflProp->getValue($translation); + if ($meta->isIdentifier($fieldName)) { + continue; + } + $fieldMappings = $meta->getFieldMapping($fieldName); + if (($fieldMappings['notInsertable'] ?? false) === true) { + continue; } - } + $data[$meta->getColumnName($fieldName)] = $reflProp->getValue($translation); + } $table = $meta->getTableName(); if (!$em->getConnection()->insert($table, $data)) { throw new RuntimeException('Failed to insert new Translation record');