Esempio n. 1
0
 public function testGetColumnName()
 {
     $cm = $this->createClassMetadata('Doctrine\\Tests\\Models\\CMS\\CmsUser');
     $cm->mapField(array('fieldName' => 'name', 'columnName' => '`name`'));
     $cm->mapField(array('fieldName' => 'id', 'columnName' => 'id'));
     $this->assertEquals('id', $this->strategy->getColumnName('id', $cm, $this->platform));
     $this->assertEquals('"name"', $this->strategy->getColumnName('name', $cm, $this->platform));
 }
Esempio n. 2
0
 /**
  * @param ClassMetadata $meta
  *
  * @return string
  * @throws \Doctrine\DBAL\DBALException
  */
 private function getRevisionSQL($meta)
 {
     if (!isset($this->revisionSQL[$meta->name])) {
         $placeholders = ['?', '?'];
         $values = ['revision_id', 'rev_type'];
         $updates = ['rev_type'];
         $tableName = $this->getTableName($meta);
         $fields = array();
         foreach ($meta->associationMappings as $field => $assoc) {
             if ($meta->isInheritanceTypeJoined() && $meta->isInheritedAssociation($field)) {
                 continue;
             }
             if (!$this->annotationReader->isPropertyRevised($meta->name, $field)) {
                 continue;
             }
             if (($assoc['type'] & ClassMetadata::TO_ONE) > 0 && $assoc['isOwningSide']) {
                 foreach ($assoc['targetToSourceKeyColumns'] as $sourceCol) {
                     $fields[$sourceCol] = true;
                     $values[] = $sourceCol;
                     $placeholders[] = '?';
                 }
             }
         }
         foreach ($meta->fieldNames as $field) {
             if (array_key_exists($field, $fields)) {
                 continue;
             }
             if ($meta->isInheritanceTypeJoined() && $meta->isInheritedField($field) && !$meta->isIdentifier($field)) {
                 continue;
             }
             if (!$this->annotationReader->isPropertyRevised($meta->name, $field) && !$meta->isIdentifier($field)) {
                 continue;
             }
             $type = Type::getType($meta->fieldMappings[$field]['type']);
             $placeholders[] = !empty($meta->fieldMappings[$field]['requireSQLConversion']) ? $type->convertToDatabaseValueSQL('?', $this->platform) : '?';
             $quoteStrategy = new DefaultQuoteStrategy();
             $values[] = $quoteStrategy->getColumnName($field, $meta, $this->platform);
             $updates[] = $quoteStrategy->getColumnName($field, $meta, $this->platform);
         }
         if ($meta->isInheritanceTypeJoined() && $meta->rootEntityName == $meta->name) {
             $values[] = $meta->discriminatorColumn['name'];
             $updates[] = $meta->discriminatorColumn['name'];
             $placeholders[] = '?';
         }
         $sql = "INSERT INTO " . $tableName . " (" . implode(", ", $values);
         $sql .= ") VALUES (" . implode(", ", $placeholders) . ")";
         $sql .= " ON DUPLICATE KEY UPDATE ";
         array_walk($updates, function (&$value) {
             $value = sprintf("%s=VALUES(%s)", $value, $value);
         });
         $sql .= implode(", ", $updates);
         $this->revisionSQL[$meta->name] = $sql;
     }
     return $this->revisionSQL[$meta->name];
 }