diff --git a/src/Propel/Generator/Behavior/Archivable/ArchivableBehavior.php b/src/Propel/Generator/Behavior/Archivable/ArchivableBehavior.php index a3bbeec2c8..638fc20a6f 100644 --- a/src/Propel/Generator/Behavior/Archivable/ArchivableBehavior.php +++ b/src/Propel/Generator/Behavior/Archivable/ArchivableBehavior.php @@ -28,6 +28,8 @@ class ArchivableBehavior extends Behavior 'archive_table' => '', 'archive_phpname' => null, 'archive_class' => '', + 'archive_foreign_keys' => 'false', + 'archive_foreign_keys_skip_sql' => 'true', 'log_archived_at' => 'true', 'archived_at_column' => 'archived_at', 'archive_on_insert' => 'false', @@ -99,7 +101,15 @@ protected function addArchiveTable() 'type' => 'TIMESTAMP' ]); } - // do not copy foreign keys + // copy foreign keys if enabled in parameters + if ($this->getParameter('archive_foreign_keys') == 'true') { + foreach ($table->getForeignKeys() as $foreignKey) { + $copiedForeignKey = clone $foreignKey; + // database foreing keys are not required + $copiedForeignKey->setSkipSql($this->getParameter('archive_foreign_keys_skip_sql') == 'true'); + $archiveTable->addForeignKey($copiedForeignKey); + } + } // copy the indices foreach ($table->getIndices() as $index) { $copiedIndex = clone $index; diff --git a/src/Propel/Generator/Builder/Om/ObjectBuilder.php b/src/Propel/Generator/Builder/Om/ObjectBuilder.php index 23f73cb27c..8a79da3457 100644 --- a/src/Propel/Generator/Builder/Om/ObjectBuilder.php +++ b/src/Propel/Generator/Builder/Om/ObjectBuilder.php @@ -4258,6 +4258,8 @@ public function set{$relatedName}(Collection \${$inputCollection}, ConnectionInt \$this->{$collName} = \${$inputCollection}; \$this->{$collName}Partial = false; + \$this->modifiedColumns[\"{$collName}\"] = true; + return \$this; } ";