From ec8cb6e38e2c878c8795068234a056e18065761e Mon Sep 17 00:00:00 2001 From: kurund Date: Thu, 12 Dec 2013 16:48:37 -0800 Subject: [PATCH] CRM-13938, add fk / join annotation ---------------------------------------- * CRM-13938: Create Annotations for entity files http://issues.civicrm.org/jira/browse/CRM-13938 --- CRM/Core/CodeGen/EntitySpecification.php | 16 ++++++++++++---- xml/templates/entity.tpl | 5 +++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CRM/Core/CodeGen/EntitySpecification.php b/CRM/Core/CodeGen/EntitySpecification.php index 6a701e5c25..0d97b81e79 100644 --- a/CRM/Core/CodeGen/EntitySpecification.php +++ b/CRM/Core/CodeGen/EntitySpecification.php @@ -111,6 +111,11 @@ class CRM_Core_CodeGen_EntitySpecification { $tables[$name]['foreignKey'][$fkey]['className'] = $classNames[$ftable]; $tables[$name]['foreignKey'][$fkey]['fileName'] = str_replace('_', '/', $classNames[$ftable]) . '.php'; $tables[$name]['fields'][$fkey]['FKClassName'] = $classNames[$ftable]; + + $targetEntity = str_replace('CRM', 'Civi', str_replace('_', '\\', $classNames[$ftable])); + $tables[$name]['fields'][$fkey]['columnType'] = '\\' . $targetEntity; + $tables[$name]['fields'][$fkey]['columnInfo'] = '@ORM\ManyToOne(targetEntity="' . $targetEntity . '")'; + $tables[$name]['fields'][$fkey]['columnJoin'] = '@ORM\JoinColumns({@ORM\JoinColumn(name="' . $tables[$name]['foreignKey'][$fkey]['name'] . '", referencedColumnName="' . $tables[$name]['foreignKey'][$fkey]['key'] . '")})'; } } @@ -194,7 +199,7 @@ class CRM_Core_CodeGen_EntitySpecification { foreach ($table['fields'] as &$field) { $field['propertyName'] = lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $field['name'])))); - $field['columnInfo'] = 'name="' . $field['name'] . '", type="' . $field['phpType'] . '"'; + $field['columnInfo'] = '@ORM\Column(name="' . $field['name'] . '", type="' . $field['phpType'] . '"'; if ($field['phpType'] == 'string') { $field['columnInfo'] .= ', length=' . $field['length']; @@ -207,6 +212,11 @@ class CRM_Core_CodeGen_EntitySpecification { $field['columnInfo'] .= ', nullable=true'; } + $field['columnInfo'] .= ')'; + + $field['columnType'] = $field['phpType']; + $field['columnJoin'] = ''; + /* * FIX ME: if needed if ($field['crmType'] == 'CRM_Utils_Type::T_ENUM') { @@ -263,8 +273,6 @@ class CRM_Core_CodeGen_EntitySpecification { } // create tags for indexes - $table['indexes'] = ''; - $table['uniqueConstraints'] = ''; $indexElements = array(); if (!empty($table['index'])) { $uniqueElements = array(); @@ -291,7 +299,7 @@ class CRM_Core_CodeGen_EntitySpecification { } // add indexes if any - if (!empty($uniqueElements)) { + if (!empty($indexElements)) { $tableInfo .= ', indexes={' . implode(',', $indexElements) . '}'; } diff --git a/xml/templates/entity.tpl b/xml/templates/entity.tpl index 74b97c4c52..5b7b99348f 100644 --- a/xml/templates/entity.tpl +++ b/xml/templates/entity.tpl @@ -58,9 +58,10 @@ class {$table.className} extends \Civi\Core\Entity {ldelim} {if $field.name eq 'id'}{continue}{/if} /** - * @var {$field.phpType} + * @var {$field.columnType} * - * @ORM\Column({$field.columnInfo}) + * {$field.columnInfo} + * {$field.columnJoin} */ private ${$field.propertyName}{if isset($field.default)} = '{$field.default}'{/if}; {/foreach} -- 2.25.1