Skip to content

Instantly share code, notes, and snippets.

@doctrinebot
Created December 13, 2015 18:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save doctrinebot/3c4c97aacdf200286b69 to your computer and use it in GitHub Desktop.
Save doctrinebot/3c4c97aacdf200286b69 to your computer and use it in GitHub Desktop.
Attachments to Doctrine Jira Issue DDC-1831 - https://github.com/doctrine/doctrine2/issues/2490
# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: /home/pablo/www/site/backend/vendor/doctrine/lib/Doctrine/ORM
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
Index: Mapping/ClassMetadataInfo.php
--- Mapping/ClassMetadataInfo.php Base (BASE)
+++ Mapping/ClassMetadataInfo.php Locally Modified (Based On LOCAL)
@@ -992,8 +992,10 @@
if (isset($joinColumn['onDelete']) && strtolower($joinColumn['onDelete']) == 'cascade') {
$mapping['isOnDeleteCascade'] = true;
}
- $mapping['relationToSourceKeyColumns'][$joinColumn['name']] = $joinColumn['referencedColumnName'];
- $mapping['joinTableColumns'][] = $joinColumn['name'];
+ $joinColumnName = $joinColumn['name'][0] == '`' ? trim($joinColumn['name'], '`') : $joinColumn['name'];
+ $mapping['relationToSourceKeyColumns'][$joinColumnName] = $joinColumn['referencedColumnName'];
+ $mapping['joinTableColumns'][] = $joinColumnName;
+ $mapping['joinTableColumnsQuoted'][$joinColumnName] = $joinColumn['name'][0] == '`' ? true : false;
}
foreach ($mapping['joinTable']['inverseJoinColumns'] as &$inverseJoinColumn) {
@@ -1006,8 +1008,10 @@
if (isset($inverseJoinColumn['onDelete']) && strtolower($inverseJoinColumn['onDelete']) == 'cascade') {
$mapping['isOnDeleteCascade'] = true;
}
- $mapping['relationToTargetKeyColumns'][$inverseJoinColumn['name']] = $inverseJoinColumn['referencedColumnName'];
- $mapping['joinTableColumns'][] = $inverseJoinColumn['name'];
+ $inverseJoinColumnName = $inverseJoinColumn['name'][0] == '`' ? trim($inverseJoinColumn['name'], '`') : $inverseJoinColumn['name'];
+ $mapping['relationToTargetKeyColumns'][$inverseJoinColumnName] = $inverseJoinColumn['referencedColumnName'];
+ $mapping['joinTableColumns'][] = $inverseJoinColumnName;
+ $mapping['joinTableColumnsQuoted'][$inverseJoinColumnName] = $inverseJoinColumn['name'][0] == '`' ? true : false;
}
}
Index: Persisters/BasicEntityPersister.php
--- Persisters/BasicEntityPersister.php Base (BASE)
+++ Persisters/BasicEntityPersister.php Locally Modified (Based On LOCAL)
@@ -787,6 +787,7 @@
if ($assoc['isOwningSide']) {
$quotedJoinTable = $sourceClass->getQuotedJoinTableName($assoc, $this->_platform);
foreach ($assoc['relationToSourceKeyColumns'] as $relationKeyColumn => $sourceKeyColumn) {
+ $quotedRelationKeyColumn = $assoc['joinTableColumnsQuoted'][$relationKeyColumn] ? $this->_platform->quoteIdentifier($relationKeyColumn) : $relationKeyColumn;
if ($sourceClass->containsForeignIdentifier) {
$field = $sourceClass->getFieldForColumn($sourceKeyColumn);
$value = $sourceClass->reflFields[$field]->getValue($sourceEntity);
@@ -795,9 +796,9 @@
$value = $value[$this->_em->getClassMetadata($sourceClass->associationMappings[$field]['targetEntity'])->identifier[0]];
}
- $criteria[$quotedJoinTable . "." . $relationKeyColumn] = $value;
+ $criteria[$quotedJoinTable . "." . $quotedRelationKeyColumn] = $value;
} else if (isset($sourceClass->fieldNames[$sourceKeyColumn])) {
- $criteria[$quotedJoinTable . "." . $relationKeyColumn] = $sourceClass->reflFields[$sourceClass->fieldNames[$sourceKeyColumn]]->getValue($sourceEntity);
+ $criteria[$quotedJoinTable . "." . $quotedRelationKeyColumn] = $sourceClass->reflFields[$sourceClass->fieldNames[$sourceKeyColumn]]->getValue($sourceEntity);
} else {
throw MappingException::joinColumnMustPointToMappedField(
$sourceClass->name, $sourceKeyColumn
@@ -1036,6 +1037,7 @@
$joinSql = '';
foreach ($joinClauses as $joinTableColumn => $sourceColumn) {
+ $quotedJoinTableColumn = $manyToMany['joinTableColumnsQuoted'][$joinTableColumn] ? $this->_platform->quoteIdentifier($joinTableColumn) : $joinTableColumn;
if ($joinSql != '') $joinSql .= ' AND ';
if ($this->_class->containsForeignIdentifier && !isset($this->_class->fieldNames[$sourceColumn])) {
@@ -1046,7 +1048,7 @@
$joinSql .= $this->_getSQLTableAlias($this->_class->name) .
'.' . $quotedColumn . ' = '
- . $joinTableName . '.' . $joinTableColumn;
+ . $joinTableName . '.' . $quotedJoinTableColumn;
}
return " INNER JOIN $joinTableName ON $joinSql";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment