mailpoet
/
vendor-prefixed
/
doctrine
/
orm
/
src
/
Persisters
/
Entity
/
AbstractEntityInheritancePersister.php
AbstractEntityInheritancePersister.php
9 months ago
BasicEntityPersister.php
9 months ago
CachedPersisterContext.php
9 months ago
EntityPersister.php
9 months ago
JoinedSubclassPersister.php
9 months ago
SingleTablePersister.php
9 months ago
index.php
9 months ago
AbstractEntityInheritancePersister.php
40 lines
| 1 | <?php |
| 2 | declare (strict_types=1); |
| 3 | namespace MailPoetVendor\Doctrine\ORM\Persisters\Entity; |
| 4 | if (!defined('ABSPATH')) exit; |
| 5 | use MailPoetVendor\Doctrine\DBAL\Types\Type; |
| 6 | use MailPoetVendor\Doctrine\ORM\Mapping\ClassMetadata; |
| 7 | use function sprintf; |
| 8 | abstract class AbstractEntityInheritancePersister extends BasicEntityPersister |
| 9 | { |
| 10 | protected function prepareInsertData($entity) |
| 11 | { |
| 12 | $data = parent::prepareInsertData($entity); |
| 13 | // Populate the discriminator column |
| 14 | $discColumn = $this->class->getDiscriminatorColumn(); |
| 15 | $this->columnTypes[$discColumn['name']] = $discColumn['type']; |
| 16 | $data[$this->getDiscriminatorColumnTableName()][$discColumn['name']] = $this->class->discriminatorValue; |
| 17 | return $data; |
| 18 | } |
| 19 | protected abstract function getDiscriminatorColumnTableName(); |
| 20 | protected function getSelectColumnSQL($field, ClassMetadata $class, $alias = 'r') |
| 21 | { |
| 22 | $tableAlias = $alias === 'r' ? '' : $alias; |
| 23 | $fieldMapping = $class->fieldMappings[$field]; |
| 24 | $columnAlias = $this->getSQLColumnAlias($fieldMapping['columnName']); |
| 25 | $sql = sprintf('%s.%s', $this->getSQLTableAlias($class->name, $tableAlias), $this->quoteStrategy->getColumnName($field, $class, $this->platform)); |
| 26 | $this->currentPersisterContext->rsm->addFieldResult($alias, $columnAlias, $field, $class->name); |
| 27 | if (isset($fieldMapping['requireSQLConversion'])) { |
| 28 | $type = Type::getType($fieldMapping['type']); |
| 29 | $sql = $type->convertToPHPValueSQL($sql, $this->platform); |
| 30 | } |
| 31 | return $sql . ' AS ' . $columnAlias; |
| 32 | } |
| 33 | protected function getSelectJoinColumnSQL($tableAlias, $joinColumnName, $quotedColumnName, $type) |
| 34 | { |
| 35 | $columnAlias = $this->getSQLColumnAlias($joinColumnName); |
| 36 | $this->currentPersisterContext->rsm->addMetaResult('r', $columnAlias, $joinColumnName, \false, $type); |
| 37 | return $tableAlias . '.' . $quotedColumnName . ' AS ' . $columnAlias; |
| 38 | } |
| 39 | } |
| 40 |