/** * @dataProvider setTableOptionsProvider */ public function testSetTableOptions($tableName, array $options, array $prevValues, array $expected) { if (!empty($prevValues)) { $this->setProtectedProperty($this->manager, 'options', $prevValues); } $this->manager->setTableOptions($tableName, $options); $this->assertEquals($expected, $this->manager->getExtendOptions()); }
/** * @param string $name * @param mixed $value Can be scalar type, array or OroOptions object * * @return \Doctrine\DBAL\Schema\Table */ public function addOption($name, $value) { if ($name === OroOptions::KEY) { if ($value instanceof OroOptions) { $value = $value->toArray(); } $this->extendOptionsManager->setTableOptions($this->getName(), $value); return $this; } return parent::addOption($name, $value); }
/** * Adds the inverse side of a many-to-one relation * * @param Schema $schema * @param Table|string $table A Table object or table name * @param string $associationName The name of a relation field * @param Table|string $targetTable A Table object or table name * @param string $targetAssociationName The name of a relation field on the inverse side * @param string[] $targetTitleColumnNames Column names are used to show a title of related entity * @param string[] $targetDetailedColumnNames Column names are used to show detailed info about related entity * @param string[] $targetGridColumnNames Column names are used to show related entity in a grid * @param array $options Entity config values * format is [CONFIG_SCOPE => [CONFIG_KEY => CONFIG_VALUE]] */ public function addManyToOneInverseRelation(Schema $schema, $table, $associationName, $targetTable, $targetAssociationName, array $targetTitleColumnNames, array $targetDetailedColumnNames, array $targetGridColumnNames, array $options = []) { $this->ensureExtendFieldSet($options); $selfTableName = $this->getTableName($table); $selfClassName = $this->getEntityClassByTableName($selfTableName); $targetTableName = $this->getTableName($targetTable); $targetTable = $this->getTable($targetTable, $schema); $targetClassName = $this->getEntityClassByTableName($targetTableName); $this->checkColumnsExist($targetTable, $targetTitleColumnNames); $this->checkColumnsExist($targetTable, $targetDetailedColumnNames); $this->checkColumnsExist($targetTable, $targetGridColumnNames); $relationKey = ExtendHelper::buildRelationKey($selfClassName, $associationName, RelationType::MANY_TO_ONE, $targetClassName); $targetFieldId = new FieldConfigId('extend', $targetClassName, $targetAssociationName, RelationType::ONE_TO_MANY); $selfTableOptions['extend']['relation.' . $relationKey . '.target_field_id'] = $targetFieldId; $this->extendOptionsManager->setTableOptions($selfTableName, $selfTableOptions); $targetTableOptions['extend']['relation.' . $relationKey . '.field_id'] = $targetFieldId; $this->extendOptionsManager->setTableOptions($targetTableName, $targetTableOptions); $options[ExtendOptionsManager::TARGET_OPTION] = ['table_name' => $selfTableName, 'relation_key' => $relationKey, 'columns' => ['title' => $targetTitleColumnNames, 'detailed' => $targetDetailedColumnNames, 'grid' => $targetGridColumnNames]]; $options[ExtendOptionsManager::TYPE_OPTION] = RelationType::ONE_TO_MANY; $this->extendOptionsManager->setColumnOptions($targetTableName, $targetAssociationName, $options); }