Repository: doctrine/orm Branch: 3.6.x Commit: 27c33cf88dde Files: 1645 Total size: 6.3 MB Directory structure: gitextract_zhimkn3r/ ├── .doctrine-project.json ├── .gitattributes ├── .github/ │ ├── PULL_REQUEST_TEMPLATE/ │ │ ├── Failing_Test.md │ │ ├── Improvement.md │ │ └── New_Feature.md │ ├── dependabot.yml │ └── workflows/ │ ├── coding-standards.yml │ ├── composer-lint.yml │ ├── continuous-integration.yml │ ├── documentation.yml │ ├── phpbench.yml │ ├── release-on-milestone-closed.yml │ ├── stale.yml │ ├── static-analysis.yml │ └── website-schema.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── UPGRADE.md ├── ci/ │ └── github/ │ └── phpunit/ │ ├── mysqli.xml │ ├── pdo_mysql.xml │ ├── pdo_pgsql.xml │ ├── pdo_sqlite.xml │ ├── pgsql.xml │ └── sqlite3.xml ├── composer.json ├── docs/ │ ├── .gitignore │ ├── LICENSE.md │ ├── README.md │ ├── composer.json │ └── en/ │ ├── cookbook/ │ │ ├── advanced-field-value-conversion-using-custom-mapping-types.rst │ │ ├── aggregate-fields.rst │ │ ├── custom-mapping-types.rst │ │ ├── decorator-pattern.rst │ │ ├── dql-custom-walkers/ │ │ │ └── InterpolateParametersSQLOutputWalker.php │ │ ├── dql-custom-walkers.rst │ │ ├── dql-user-defined-functions.rst │ │ ├── entities-in-session.rst │ │ ├── generated-columns/ │ │ │ ├── Article.php │ │ │ └── Person.php │ │ ├── generated-columns.rst │ │ ├── implementing-arrayaccess-for-domain-objects.rst │ │ ├── mysql-enums.rst │ │ ├── resolve-target-entity-listener.rst │ │ ├── sql-table-prefixes.rst │ │ ├── strategy-cookbook-introduction.rst │ │ ├── validation-of-entities.rst │ │ └── working-with-datetime.rst │ ├── index.rst │ ├── reference/ │ │ ├── advanced-configuration.rst │ │ ├── architecture.rst │ │ ├── association-mapping.rst │ │ ├── attributes-reference.rst │ │ ├── basic-mapping/ │ │ │ ├── DefaultValues.php │ │ │ └── default-values.xml │ │ ├── basic-mapping.rst │ │ ├── batch-processing.rst │ │ ├── best-practices.rst │ │ ├── caching.rst │ │ ├── change-tracking-policies.rst │ │ ├── configuration.rst │ │ ├── dql-doctrine-query-language.rst │ │ ├── events.rst │ │ ├── faq.rst │ │ ├── filters.rst │ │ ├── improving-performance.rst │ │ ├── inheritance-mapping.rst │ │ ├── installation.rst │ │ ├── limitations-and-known-issues.rst │ │ ├── metadata-drivers.rst │ │ ├── namingstrategy.rst │ │ ├── native-sql.rst │ │ ├── partial-hydration.rst │ │ ├── partial-objects.rst │ │ ├── php-mapping.rst │ │ ├── query-builder.rst │ │ ├── second-level-cache.rst │ │ ├── security.rst │ │ ├── tools.rst │ │ ├── transactions-and-concurrency.rst │ │ ├── typedfieldmapper.rst │ │ ├── unitofwork-associations.rst │ │ ├── unitofwork.rst │ │ ├── working-with-associations.rst │ │ ├── working-with-objects.rst │ │ └── xml-mapping.rst │ ├── sidebar.rst │ └── tutorials/ │ ├── composite-primary-keys.rst │ ├── embeddables.rst │ ├── extra-lazy-associations.rst │ ├── getting-started.rst │ ├── ordered-associations.rst │ ├── override-field-association-mappings-in-subclasses.rst │ ├── pagination.rst │ ├── working-with-indexed-associations/ │ │ ├── Market.php │ │ └── market.xml │ └── working-with-indexed-associations.rst ├── doctrine-mapping.xsd ├── phpbench.json ├── phpcs.xml.dist ├── phpstan-baseline.neon ├── phpstan-dbal3.neon ├── phpstan-params.neon ├── phpstan.neon ├── phpunit.xml.dist ├── src/ │ ├── AbstractQuery.php │ ├── Cache/ │ │ ├── AssociationCacheEntry.php │ │ ├── CacheConfiguration.php │ │ ├── CacheEntry.php │ │ ├── CacheException.php │ │ ├── CacheFactory.php │ │ ├── CacheKey.php │ │ ├── CollectionCacheEntry.php │ │ ├── CollectionCacheKey.php │ │ ├── CollectionHydrator.php │ │ ├── ConcurrentRegion.php │ │ ├── DefaultCache.php │ │ ├── DefaultCacheFactory.php │ │ ├── DefaultCollectionHydrator.php │ │ ├── DefaultEntityHydrator.php │ │ ├── DefaultQueryCache.php │ │ ├── EntityCacheEntry.php │ │ ├── EntityCacheKey.php │ │ ├── EntityHydrator.php │ │ ├── Exception/ │ │ │ ├── CacheException.php │ │ │ ├── CannotUpdateReadOnlyCollection.php │ │ │ ├── CannotUpdateReadOnlyEntity.php │ │ │ ├── FeatureNotImplemented.php │ │ │ ├── NonCacheableEntity.php │ │ │ └── NonCacheableEntityAssociation.php │ │ ├── Lock.php │ │ ├── LockException.php │ │ ├── Logging/ │ │ │ ├── CacheLogger.php │ │ │ ├── CacheLoggerChain.php │ │ │ └── StatisticsCacheLogger.php │ │ ├── Persister/ │ │ │ ├── CachedPersister.php │ │ │ ├── Collection/ │ │ │ │ ├── AbstractCollectionPersister.php │ │ │ │ ├── CachedCollectionPersister.php │ │ │ │ ├── NonStrictReadWriteCachedCollectionPersister.php │ │ │ │ ├── ReadOnlyCachedCollectionPersister.php │ │ │ │ └── ReadWriteCachedCollectionPersister.php │ │ │ └── Entity/ │ │ │ ├── AbstractEntityPersister.php │ │ │ ├── CachedEntityPersister.php │ │ │ ├── NonStrictReadWriteCachedEntityPersister.php │ │ │ ├── ReadOnlyCachedEntityPersister.php │ │ │ └── ReadWriteCachedEntityPersister.php │ │ ├── QueryCache.php │ │ ├── QueryCacheEntry.php │ │ ├── QueryCacheKey.php │ │ ├── QueryCacheValidator.php │ │ ├── Region/ │ │ │ ├── DefaultRegion.php │ │ │ ├── FileLockRegion.php │ │ │ └── UpdateTimestampCache.php │ │ ├── Region.php │ │ ├── RegionsConfiguration.php │ │ ├── TimestampCacheEntry.php │ │ ├── TimestampCacheKey.php │ │ ├── TimestampQueryCacheValidator.php │ │ └── TimestampRegion.php │ ├── Cache.php │ ├── Configuration.php │ ├── Decorator/ │ │ └── EntityManagerDecorator.php │ ├── EntityManager.php │ ├── EntityManagerInterface.php │ ├── EntityNotFoundException.php │ ├── EntityRepository.php │ ├── Event/ │ │ ├── ListenersInvoker.php │ │ ├── LoadClassMetadataEventArgs.php │ │ ├── OnClassMetadataNotFoundEventArgs.php │ │ ├── OnClearEventArgs.php │ │ ├── OnFlushEventArgs.php │ │ ├── PostFlushEventArgs.php │ │ ├── PostLoadEventArgs.php │ │ ├── PostPersistEventArgs.php │ │ ├── PostRemoveEventArgs.php │ │ ├── PostUpdateEventArgs.php │ │ ├── PreFlushEventArgs.php │ │ ├── PrePersistEventArgs.php │ │ ├── PreRemoveEventArgs.php │ │ └── PreUpdateEventArgs.php │ ├── Events.php │ ├── Exception/ │ │ ├── ConfigurationException.php │ │ ├── DuplicateFieldException.php │ │ ├── EntityIdentityCollisionException.php │ │ ├── EntityManagerClosed.php │ │ ├── EntityMissingAssignedId.php │ │ ├── InvalidEntityRepository.php │ │ ├── InvalidHydrationMode.php │ │ ├── ManagerException.php │ │ ├── MissingIdentifierField.php │ │ ├── MissingMappingDriverImplementation.php │ │ ├── MultipleSelectorsFoundException.php │ │ ├── NoMatchingPropertyException.php │ │ ├── NotSupported.php │ │ ├── ORMException.php │ │ ├── PersisterException.php │ │ ├── RepositoryException.php │ │ ├── SchemaToolException.php │ │ ├── UnexpectedAssociationValue.php │ │ └── UnrecognizedIdentifierFields.php │ ├── Id/ │ │ ├── AbstractIdGenerator.php │ │ ├── AssignedGenerator.php │ │ ├── BigIntegerIdentityGenerator.php │ │ ├── IdentityGenerator.php │ │ └── SequenceGenerator.php │ ├── Internal/ │ │ ├── Hydration/ │ │ │ ├── AbstractHydrator.php │ │ │ ├── ArrayHydrator.php │ │ │ ├── HydrationException.php │ │ │ ├── ObjectHydrator.php │ │ │ ├── ScalarColumnHydrator.php │ │ │ ├── ScalarHydrator.php │ │ │ ├── SimpleObjectHydrator.php │ │ │ └── SingleScalarHydrator.php │ │ ├── HydrationCompleteHandler.php │ │ ├── NoUnknownNamedArguments.php │ │ ├── SQLResultCasing.php │ │ ├── StronglyConnectedComponents.php │ │ ├── TopologicalSort/ │ │ │ └── CycleDetectedException.php │ │ ├── TopologicalSort.php │ │ └── UnitOfWork/ │ │ └── InsertBatch.php │ ├── LazyCriteriaCollection.php │ ├── Mapping/ │ │ ├── AnsiQuoteStrategy.php │ │ ├── ArrayAccessImplementation.php │ │ ├── AssociationMapping.php │ │ ├── AssociationOverride.php │ │ ├── AssociationOverrides.php │ │ ├── AttributeOverride.php │ │ ├── AttributeOverrides.php │ │ ├── Builder/ │ │ │ ├── AssociationBuilder.php │ │ │ ├── ClassMetadataBuilder.php │ │ │ ├── EmbeddedBuilder.php │ │ │ ├── EntityListenerBuilder.php │ │ │ ├── FieldBuilder.php │ │ │ ├── ManyToManyAssociationBuilder.php │ │ │ └── OneToManyAssociationBuilder.php │ │ ├── Cache.php │ │ ├── ChainTypedFieldMapper.php │ │ ├── ChangeTrackingPolicy.php │ │ ├── ClassMetadata.php │ │ ├── ClassMetadataFactory.php │ │ ├── Column.php │ │ ├── CustomIdGenerator.php │ │ ├── DefaultEntityListenerResolver.php │ │ ├── DefaultNamingStrategy.php │ │ ├── DefaultQuoteStrategy.php │ │ ├── DefaultTypedFieldMapper.php │ │ ├── DiscriminatorColumn.php │ │ ├── DiscriminatorColumnMapping.php │ │ ├── DiscriminatorMap.php │ │ ├── Driver/ │ │ │ ├── AttributeDriver.php │ │ │ ├── AttributeReader.php │ │ │ ├── DatabaseDriver.php │ │ │ ├── LoadMappingFileImplementation.php │ │ │ ├── ReflectionBasedDriver.php │ │ │ ├── RepeatableAttributeCollection.php │ │ │ ├── SimplifiedXmlDriver.php │ │ │ └── XmlDriver.php │ │ ├── Embeddable.php │ │ ├── Embedded.php │ │ ├── EmbeddedClassMapping.php │ │ ├── Entity.php │ │ ├── EntityListenerResolver.php │ │ ├── EntityListeners.php │ │ ├── Exception/ │ │ │ ├── InvalidCustomGenerator.php │ │ │ └── UnknownGeneratorType.php │ │ ├── FieldMapping.php │ │ ├── GeneratedValue.php │ │ ├── GetReflectionClassImplementation.php │ │ ├── HasLifecycleCallbacks.php │ │ ├── Id.php │ │ ├── Index.php │ │ ├── InheritanceType.php │ │ ├── InverseJoinColumn.php │ │ ├── InverseSideMapping.php │ │ ├── JoinColumn.php │ │ ├── JoinColumnMapping.php │ │ ├── JoinColumnProperties.php │ │ ├── JoinColumns.php │ │ ├── JoinTable.php │ │ ├── JoinTableMapping.php │ │ ├── LegacyReflectionFields.php │ │ ├── ManyToMany.php │ │ ├── ManyToManyAssociationMapping.php │ │ ├── ManyToManyInverseSideMapping.php │ │ ├── ManyToManyOwningSideMapping.php │ │ ├── ManyToOne.php │ │ ├── ManyToOneAssociationMapping.php │ │ ├── MappedSuperclass.php │ │ ├── MappingAttribute.php │ │ ├── MappingException.php │ │ ├── NamingStrategy.php │ │ ├── OneToMany.php │ │ ├── OneToManyAssociationMapping.php │ │ ├── OneToOne.php │ │ ├── OneToOneAssociationMapping.php │ │ ├── OneToOneInverseSideMapping.php │ │ ├── OneToOneOwningSideMapping.php │ │ ├── OrderBy.php │ │ ├── OwningSideMapping.php │ │ ├── PostLoad.php │ │ ├── PostPersist.php │ │ ├── PostRemove.php │ │ ├── PostUpdate.php │ │ ├── PreFlush.php │ │ ├── PrePersist.php │ │ ├── PreRemove.php │ │ ├── PreUpdate.php │ │ ├── PropertyAccessors/ │ │ │ ├── EmbeddablePropertyAccessor.php │ │ │ ├── EnumPropertyAccessor.php │ │ │ ├── ObjectCastPropertyAccessor.php │ │ │ ├── PropertyAccessor.php │ │ │ ├── PropertyAccessorFactory.php │ │ │ ├── RawValuePropertyAccessor.php │ │ │ ├── ReadonlyAccessor.php │ │ │ └── TypedNoDefaultPropertyAccessor.php │ │ ├── QuoteStrategy.php │ │ ├── ReflectionEmbeddedProperty.php │ │ ├── ReflectionEnumProperty.php │ │ ├── ReflectionReadonlyProperty.php │ │ ├── SequenceGenerator.php │ │ ├── Table.php │ │ ├── ToManyAssociationMapping.php │ │ ├── ToManyAssociationMappingImplementation.php │ │ ├── ToManyInverseSideMapping.php │ │ ├── ToManyOwningSideMapping.php │ │ ├── ToOneAssociationMapping.php │ │ ├── ToOneInverseSideMapping.php │ │ ├── ToOneOwningSideMapping.php │ │ ├── TypedFieldMapper.php │ │ ├── UnderscoreNamingStrategy.php │ │ ├── UniqueConstraint.php │ │ └── Version.php │ ├── NativeQuery.php │ ├── NoResultException.php │ ├── NonUniqueResultException.php │ ├── ORMInvalidArgumentException.php │ ├── ORMSetup.php │ ├── OptimisticLockException.php │ ├── PersistentCollection.php │ ├── Persisters/ │ │ ├── Collection/ │ │ │ ├── AbstractCollectionPersister.php │ │ │ ├── CollectionPersister.php │ │ │ ├── ManyToManyPersister.php │ │ │ └── OneToManyPersister.php │ │ ├── Entity/ │ │ │ ├── AbstractEntityInheritancePersister.php │ │ │ ├── BasicEntityPersister.php │ │ │ ├── CachedPersisterContext.php │ │ │ ├── EntityPersister.php │ │ │ ├── JoinedSubclassPersister.php │ │ │ └── SingleTablePersister.php │ │ ├── Exception/ │ │ │ ├── CantUseInOperatorOnCompositeKeys.php │ │ │ ├── InvalidOrientation.php │ │ │ └── UnrecognizedField.php │ │ ├── MatchingAssociationFieldRequiresObject.php │ │ ├── PersisterException.php │ │ ├── SqlExpressionVisitor.php │ │ └── SqlValueVisitor.php │ ├── PessimisticLockException.php │ ├── Proxy/ │ │ ├── Autoloader.php │ │ ├── DefaultProxyClassNameResolver.php │ │ ├── InternalProxy.php │ │ ├── NotAProxyClass.php │ │ └── ProxyFactory.php │ ├── Query/ │ │ ├── AST/ │ │ │ ├── ASTException.php │ │ │ ├── AggregateExpression.php │ │ │ ├── ArithmeticExpression.php │ │ │ ├── ArithmeticFactor.php │ │ │ ├── ArithmeticTerm.php │ │ │ ├── BetweenExpression.php │ │ │ ├── CoalesceExpression.php │ │ │ ├── CollectionMemberExpression.php │ │ │ ├── ComparisonExpression.php │ │ │ ├── ConditionalExpression.php │ │ │ ├── ConditionalFactor.php │ │ │ ├── ConditionalPrimary.php │ │ │ ├── ConditionalTerm.php │ │ │ ├── DeleteClause.php │ │ │ ├── DeleteStatement.php │ │ │ ├── EmptyCollectionComparisonExpression.php │ │ │ ├── EntityAsDtoArgumentExpression.php │ │ │ ├── ExistsExpression.php │ │ │ ├── FromClause.php │ │ │ ├── Functions/ │ │ │ │ ├── AbsFunction.php │ │ │ │ ├── AvgFunction.php │ │ │ │ ├── BitAndFunction.php │ │ │ │ ├── BitOrFunction.php │ │ │ │ ├── ConcatFunction.php │ │ │ │ ├── CountFunction.php │ │ │ │ ├── CurrentDateFunction.php │ │ │ │ ├── CurrentTimeFunction.php │ │ │ │ ├── CurrentTimestampFunction.php │ │ │ │ ├── DateAddFunction.php │ │ │ │ ├── DateDiffFunction.php │ │ │ │ ├── DateSubFunction.php │ │ │ │ ├── FunctionNode.php │ │ │ │ ├── IdentityFunction.php │ │ │ │ ├── LengthFunction.php │ │ │ │ ├── LocateFunction.php │ │ │ │ ├── LowerFunction.php │ │ │ │ ├── MaxFunction.php │ │ │ │ ├── MinFunction.php │ │ │ │ ├── ModFunction.php │ │ │ │ ├── SizeFunction.php │ │ │ │ ├── SqrtFunction.php │ │ │ │ ├── SubstringFunction.php │ │ │ │ ├── SumFunction.php │ │ │ │ ├── TrimFunction.php │ │ │ │ └── UpperFunction.php │ │ │ ├── GeneralCaseExpression.php │ │ │ ├── GroupByClause.php │ │ │ ├── HavingClause.php │ │ │ ├── IdentificationVariableDeclaration.php │ │ │ ├── InListExpression.php │ │ │ ├── InSubselectExpression.php │ │ │ ├── IndexBy.php │ │ │ ├── InputParameter.php │ │ │ ├── InstanceOfExpression.php │ │ │ ├── Join.php │ │ │ ├── JoinAssociationDeclaration.php │ │ │ ├── JoinAssociationPathExpression.php │ │ │ ├── JoinClassPathExpression.php │ │ │ ├── JoinVariableDeclaration.php │ │ │ ├── LikeExpression.php │ │ │ ├── Literal.php │ │ │ ├── NewObjectExpression.php │ │ │ ├── Node.php │ │ │ ├── NullComparisonExpression.php │ │ │ ├── NullIfExpression.php │ │ │ ├── OrderByClause.php │ │ │ ├── OrderByItem.php │ │ │ ├── ParenthesisExpression.php │ │ │ ├── PartialObjectExpression.php │ │ │ ├── PathExpression.php │ │ │ ├── Phase2OptimizableConditional.php │ │ │ ├── QuantifiedExpression.php │ │ │ ├── RangeVariableDeclaration.php │ │ │ ├── SelectClause.php │ │ │ ├── SelectExpression.php │ │ │ ├── SelectStatement.php │ │ │ ├── SimpleArithmeticExpression.php │ │ │ ├── SimpleCaseExpression.php │ │ │ ├── SimpleSelectClause.php │ │ │ ├── SimpleSelectExpression.php │ │ │ ├── SimpleWhenClause.php │ │ │ ├── Subselect.php │ │ │ ├── SubselectFromClause.php │ │ │ ├── SubselectIdentificationVariableDeclaration.php │ │ │ ├── TypedExpression.php │ │ │ ├── UpdateClause.php │ │ │ ├── UpdateItem.php │ │ │ ├── UpdateStatement.php │ │ │ ├── WhenClause.php │ │ │ └── WhereClause.php │ │ ├── Exec/ │ │ │ ├── AbstractSqlExecutor.php │ │ │ ├── FinalizedSelectExecutor.php │ │ │ ├── MultiTableDeleteExecutor.php │ │ │ ├── MultiTableUpdateExecutor.php │ │ │ ├── PreparedExecutorFinalizer.php │ │ │ ├── SingleSelectExecutor.php │ │ │ ├── SingleSelectSqlFinalizer.php │ │ │ ├── SingleTableDeleteUpdateExecutor.php │ │ │ └── SqlFinalizer.php │ │ ├── Expr/ │ │ │ ├── Andx.php │ │ │ ├── Base.php │ │ │ ├── Comparison.php │ │ │ ├── Composite.php │ │ │ ├── From.php │ │ │ ├── Func.php │ │ │ ├── GroupBy.php │ │ │ ├── Join.php │ │ │ ├── Literal.php │ │ │ ├── Math.php │ │ │ ├── OrderBy.php │ │ │ ├── Orx.php │ │ │ └── Select.php │ │ ├── Expr.php │ │ ├── Filter/ │ │ │ ├── FilterException.php │ │ │ ├── Parameter.php │ │ │ └── SQLFilter.php │ │ ├── FilterCollection.php │ │ ├── Lexer.php │ │ ├── OutputWalker.php │ │ ├── Parameter.php │ │ ├── ParameterTypeInferer.php │ │ ├── Parser.php │ │ ├── ParserResult.php │ │ ├── Printer.php │ │ ├── QueryException.php │ │ ├── QueryExpressionVisitor.php │ │ ├── ResultSetMapping.php │ │ ├── ResultSetMappingBuilder.php │ │ ├── SqlOutputWalker.php │ │ ├── SqlWalker.php │ │ ├── TokenType.php │ │ ├── TreeWalker.php │ │ ├── TreeWalkerAdapter.php │ │ └── TreeWalkerChain.php │ ├── Query.php │ ├── QueryBuilder.php │ ├── QueryType.php │ ├── Repository/ │ │ ├── DefaultRepositoryFactory.php │ │ ├── Exception/ │ │ │ ├── InvalidFindByCall.php │ │ │ └── InvalidMagicMethodCall.php │ │ └── RepositoryFactory.php │ ├── Tools/ │ │ ├── AttachEntityListenersListener.php │ │ ├── Console/ │ │ │ ├── ApplicationCompatibility.php │ │ │ ├── Command/ │ │ │ │ ├── AbstractEntityManagerCommand.php │ │ │ │ ├── ClearCache/ │ │ │ │ │ ├── CollectionRegionCommand.php │ │ │ │ │ ├── EntityRegionCommand.php │ │ │ │ │ ├── MetadataCommand.php │ │ │ │ │ ├── QueryCommand.php │ │ │ │ │ ├── QueryRegionCommand.php │ │ │ │ │ └── ResultCommand.php │ │ │ │ ├── Debug/ │ │ │ │ │ ├── AbstractCommand.php │ │ │ │ │ ├── DebugEntityListenersDoctrineCommand.php │ │ │ │ │ └── DebugEventManagerDoctrineCommand.php │ │ │ │ ├── GenerateProxiesCommand.php │ │ │ │ ├── InfoCommand.php │ │ │ │ ├── MappingDescribeCommand.php │ │ │ │ ├── MappingDescribeCommandFormat.php │ │ │ │ ├── RunDqlCommand.php │ │ │ │ ├── SchemaTool/ │ │ │ │ │ ├── AbstractCommand.php │ │ │ │ │ ├── CreateCommand.php │ │ │ │ │ ├── DropCommand.php │ │ │ │ │ └── UpdateCommand.php │ │ │ │ └── ValidateSchemaCommand.php │ │ │ ├── ConsoleRunner.php │ │ │ ├── EntityManagerProvider/ │ │ │ │ ├── ConnectionFromManagerProvider.php │ │ │ │ ├── SingleManagerProvider.php │ │ │ │ └── UnknownManagerException.php │ │ │ ├── EntityManagerProvider.php │ │ │ └── MetadataFilter.php │ │ ├── Debug.php │ │ ├── DebugUnitOfWorkListener.php │ │ ├── Event/ │ │ │ ├── GenerateSchemaEventArgs.php │ │ │ └── GenerateSchemaTableEventArgs.php │ │ ├── Exception/ │ │ │ ├── MissingColumnException.php │ │ │ └── NotSupported.php │ │ ├── Pagination/ │ │ │ ├── CountOutputWalker.php │ │ │ ├── CountWalker.php │ │ │ ├── Exception/ │ │ │ │ └── RowNumberOverFunctionNotEnabled.php │ │ │ ├── LimitSubqueryOutputWalker.php │ │ │ ├── LimitSubqueryWalker.php │ │ │ ├── Paginator.php │ │ │ ├── RootTypeWalker.php │ │ │ ├── RowNumberOverFunction.php │ │ │ └── WhereInWalker.php │ │ ├── ResolveTargetEntityListener.php │ │ ├── SchemaTool.php │ │ ├── SchemaValidator.php │ │ ├── ToolEvents.php │ │ └── ToolsException.php │ ├── TransactionRequiredException.php │ ├── UnexpectedResultException.php │ ├── UnitOfWork.php │ └── Utility/ │ ├── HierarchyDiscriminatorResolver.php │ ├── IdentifierFlattener.php │ ├── LockSqlHelper.php │ └── PersisterHelper.php └── tests/ ├── .gitignore ├── Doctrine/ │ └── Tests/ │ └── ORM/ │ └── Functional/ │ ├── GH8011Test.php │ └── Ticket/ │ ├── GH12063Test.php │ └── LazyEagerCollectionTest.php ├── Performance/ │ ├── ChangeSet/ │ │ └── UnitOfWorkComputeChangesBench.php │ ├── EntityManagerFactory.php │ ├── Hydration/ │ │ ├── MixedQueryFetchJoinArrayHydrationPerformanceBench.php │ │ ├── MixedQueryFetchJoinFullObjectHydrationPerformanceBench.php │ │ ├── MixedQueryFetchJoinPartialObjectHydrationPerformanceBench.php │ │ ├── SimpleHydrationBench.php │ │ ├── SimpleInsertPerformanceBench.php │ │ ├── SimpleQueryArrayHydrationPerformanceBench.php │ │ ├── SimpleQueryFullObjectHydrationPerformanceBench.php │ │ ├── SimpleQueryPartialObjectHydrationPerformanceBench.php │ │ ├── SimpleQueryScalarHydrationPerformanceBench.php │ │ ├── SingleTableInheritanceHydrationPerformanceBench.php │ │ └── SingleTableInheritanceInsertPerformanceBench.php │ ├── LazyLoading/ │ │ ├── ProxyInitializationTimeBench.php │ │ └── ProxyInstantiationTimeBench.php │ ├── Mock/ │ │ ├── NonLoadingPersister.php │ │ ├── NonProxyLoadingEntityManager.php │ │ └── NonProxyLoadingUnitOfWork.php │ └── Query/ │ └── QueryBoundParameterProcessingBench.php ├── README.markdown ├── StaticAnalysis/ │ ├── Mapping/ │ │ └── class-metadata-constructor.php │ ├── Tools/ │ │ └── Pagination/ │ │ └── paginator-covariant.php │ └── get-metadata.php ├── Tests/ │ ├── DbalExtensions/ │ │ ├── Connection.php │ │ ├── QueryLog.php │ │ └── SqlLogger.php │ ├── DbalTypes/ │ │ ├── CustomIdObject.php │ │ ├── CustomIdObjectType.php │ │ ├── CustomIntType.php │ │ ├── GH8565EmployeePayloadType.php │ │ ├── GH8565ManagerPayloadType.php │ │ ├── NegativeToPositiveType.php │ │ ├── Rot13Type.php │ │ └── UpperCaseStringType.php │ ├── EventListener/ │ │ └── CacheMetadataListener.php │ ├── IterableTester.php │ ├── Mocks/ │ │ ├── ArrayResultFactory.php │ │ ├── AttributeDriverFactory.php │ │ ├── CacheEntryMock.php │ │ ├── CacheKeyMock.php │ │ ├── CacheRegionMock.php │ │ ├── CompatibilityType.php │ │ ├── ConcurrentRegionMock.php │ │ ├── CustomTreeWalkerJoin.php │ │ ├── EntityManagerMock.php │ │ ├── EntityPersisterMock.php │ │ ├── ExceptionConverterMock.php │ │ ├── MetadataDriverMock.php │ │ ├── NullSqlWalker.php │ │ ├── SchemaManagerMock.php │ │ ├── TimestampRegionMock.php │ │ └── UnitOfWorkMock.php │ ├── Models/ │ │ ├── AbstractFetchEager/ │ │ │ ├── AbstractRemoteControl.php │ │ │ ├── MobileRemoteControl.php │ │ │ └── User.php │ │ ├── BigIntegers/ │ │ │ └── BigIntegers.php │ │ ├── BinaryPrimaryKey/ │ │ │ ├── BinaryId.php │ │ │ ├── BinaryIdType.php │ │ │ └── Category.php │ │ ├── CMS/ │ │ │ ├── CmsAddress.php │ │ │ ├── CmsAddressDTO.php │ │ │ ├── CmsAddressDTONamedArgs.php │ │ │ ├── CmsAddressListener.php │ │ │ ├── CmsArticle.php │ │ │ ├── CmsComment.php │ │ │ ├── CmsDumbDTO.php │ │ │ ├── CmsEmail.php │ │ │ ├── CmsEmployee.php │ │ │ ├── CmsGroup.php │ │ │ ├── CmsPhonenumber.php │ │ │ ├── CmsTag.php │ │ │ ├── CmsUser.php │ │ │ ├── CmsUserDTO.php │ │ │ ├── CmsUserDTONamedArgs.php │ │ │ └── CmsUserDTOVariadicArg.php │ │ ├── Cache/ │ │ │ ├── Action.php │ │ │ ├── Address.php │ │ │ ├── Attraction.php │ │ │ ├── AttractionContactInfo.php │ │ │ ├── AttractionInfo.php │ │ │ ├── AttractionLocationInfo.php │ │ │ ├── Bar.php │ │ │ ├── Beach.php │ │ │ ├── City.php │ │ │ ├── Client.php │ │ │ ├── ComplexAction.php │ │ │ ├── Country.php │ │ │ ├── Flight.php │ │ │ ├── Login.php │ │ │ ├── Person.php │ │ │ ├── Restaurant.php │ │ │ ├── State.php │ │ │ ├── Token.php │ │ │ ├── Travel.php │ │ │ ├── Traveler.php │ │ │ ├── TravelerProfile.php │ │ │ └── TravelerProfileInfo.php │ │ ├── Company/ │ │ │ ├── CompanyAuction.php │ │ │ ├── CompanyCar.php │ │ │ ├── CompanyContract.php │ │ │ ├── CompanyContractListener.php │ │ │ ├── CompanyEmployee.php │ │ │ ├── CompanyEvent.php │ │ │ ├── CompanyFixContract.php │ │ │ ├── CompanyFlexContract.php │ │ │ ├── CompanyFlexUltraContract.php │ │ │ ├── CompanyFlexUltraContractListener.php │ │ │ ├── CompanyManager.php │ │ │ ├── CompanyOrganization.php │ │ │ ├── CompanyPerson.php │ │ │ └── CompanyRaffle.php │ │ ├── CompositeKeyInheritance/ │ │ │ ├── JoinedChildClass.php │ │ │ ├── JoinedDerivedChildClass.php │ │ │ ├── JoinedDerivedIdentityClass.php │ │ │ ├── JoinedDerivedRootClass.php │ │ │ ├── JoinedRootClass.php │ │ │ ├── SingleChildClass.php │ │ │ └── SingleRootClass.php │ │ ├── CompositeKeyRelations/ │ │ │ ├── CustomerClass.php │ │ │ └── InvoiceClass.php │ │ ├── CustomType/ │ │ │ ├── CustomIdObjectTypeChild.php │ │ │ ├── CustomIdObjectTypeParent.php │ │ │ ├── CustomTypeChild.php │ │ │ ├── CustomTypeParent.php │ │ │ └── CustomTypeUpperCase.php │ │ ├── Customer/ │ │ │ ├── CustomerType.php │ │ │ ├── ExternalCustomer.php │ │ │ └── InternalCustomer.php │ │ ├── DDC117/ │ │ │ ├── DDC117ApproveChanges.php │ │ │ ├── DDC117Article.php │ │ │ ├── DDC117ArticleDetails.php │ │ │ ├── DDC117Editor.php │ │ │ ├── DDC117Link.php │ │ │ ├── DDC117Reference.php │ │ │ └── DDC117Translation.php │ │ ├── DDC1476/ │ │ │ └── DDC1476EntityWithDefaultFieldType.php │ │ ├── DDC1590/ │ │ │ ├── DDC1590Entity.php │ │ │ └── DDC1590User.php │ │ ├── DDC1872/ │ │ │ ├── DDC1872Bar.php │ │ │ ├── DDC1872ExampleEntityWithOverride.php │ │ │ ├── DDC1872ExampleEntityWithoutOverride.php │ │ │ └── DDC1872ExampleTrait.php │ │ ├── DDC2372/ │ │ │ ├── DDC2372Address.php │ │ │ ├── DDC2372Admin.php │ │ │ ├── DDC2372User.php │ │ │ └── Traits/ │ │ │ └── DDC2372AddressAndAccessors.php │ │ ├── DDC2504/ │ │ │ ├── DDC2504ChildClass.php │ │ │ ├── DDC2504OtherClass.php │ │ │ └── DDC2504RootClass.php │ │ ├── DDC2825/ │ │ │ ├── ExplicitSchemaAndTable.php │ │ │ └── SchemaAndTableInTableName.php │ │ ├── DDC3231/ │ │ │ ├── DDC3231EntityRepository.php │ │ │ ├── DDC3231User1.php │ │ │ ├── DDC3231User1NoNamespace.php │ │ │ ├── DDC3231User2.php │ │ │ └── DDC3231User2NoNamespace.php │ │ ├── DDC3293/ │ │ │ ├── DDC3293Address.php │ │ │ ├── DDC3293User.php │ │ │ └── DDC3293UserPrefixed.php │ │ ├── DDC3346/ │ │ │ ├── DDC3346Article.php │ │ │ └── DDC3346Author.php │ │ ├── DDC3579/ │ │ │ ├── DDC3579Admin.php │ │ │ ├── DDC3579Group.php │ │ │ └── DDC3579User.php │ │ ├── DDC3597/ │ │ │ ├── DDC3597Image.php │ │ │ ├── DDC3597Media.php │ │ │ ├── DDC3597Root.php │ │ │ └── Embeddable/ │ │ │ └── DDC3597Dimension.php │ │ ├── DDC3699/ │ │ │ ├── DDC3699Child.php │ │ │ ├── DDC3699Parent.php │ │ │ ├── DDC3699RelationMany.php │ │ │ └── DDC3699RelationOne.php │ │ ├── DDC3711/ │ │ │ ├── DDC3711EntityA.php │ │ │ └── DDC3711EntityB.php │ │ ├── DDC3899/ │ │ │ ├── DDC3899Contract.php │ │ │ ├── DDC3899FixContract.php │ │ │ ├── DDC3899FlexContract.php │ │ │ └── DDC3899User.php │ │ ├── DDC4006/ │ │ │ ├── DDC4006User.php │ │ │ └── DDC4006UserId.php │ │ ├── DDC5934/ │ │ │ ├── DDC5934BaseContract.php │ │ │ ├── DDC5934Contract.php │ │ │ └── DDC5934Member.php │ │ ├── DDC6412/ │ │ │ └── DDC6412File.php │ │ ├── DDC6573/ │ │ │ ├── DDC6573Currency.php │ │ │ ├── DDC6573Item.php │ │ │ └── DDC6573Money.php │ │ ├── DDC753/ │ │ │ ├── DDC753CustomRepository.php │ │ │ ├── DDC753DefaultRepository.php │ │ │ ├── DDC753EntityWithCustomRepository.php │ │ │ ├── DDC753EntityWithDefaultCustomRepository.php │ │ │ ├── DDC753EntityWithInvalidRepository.php │ │ │ └── DDC753InvalidRepository.php │ │ ├── DDC869/ │ │ │ ├── DDC869ChequePayment.php │ │ │ ├── DDC869CreditCardPayment.php │ │ │ ├── DDC869Payment.php │ │ │ └── DDC869PaymentRepository.php │ │ ├── DDC889/ │ │ │ ├── DDC889Class.php │ │ │ ├── DDC889Entity.php │ │ │ └── DDC889SuperClass.php │ │ ├── DDC964/ │ │ │ ├── DDC964Address.php │ │ │ ├── DDC964Admin.php │ │ │ ├── DDC964Group.php │ │ │ ├── DDC964Guest.php │ │ │ └── DDC964User.php │ │ ├── DataTransferObjects/ │ │ │ ├── DtoWithArrayOfEnums.php │ │ │ └── DtoWithEnum.php │ │ ├── DirectoryTree/ │ │ │ ├── AbstractContentItem.php │ │ │ ├── Directory.php │ │ │ └── File.php │ │ ├── ECommerce/ │ │ │ ├── ECommerceCart.php │ │ │ ├── ECommerceCategory.php │ │ │ ├── ECommerceCustomer.php │ │ │ ├── ECommerceFeature.php │ │ │ ├── ECommerceProduct.php │ │ │ ├── ECommerceProduct2.php │ │ │ └── ECommerceShipping.php │ │ ├── EagerFetchedCompositeOneToMany/ │ │ │ ├── RootEntity.php │ │ │ ├── SecondLevel.php │ │ │ └── SecondLevelWithoutCompositePrimaryKey.php │ │ ├── Enums/ │ │ │ ├── AccessLevel.php │ │ │ ├── BookCategory.php │ │ │ ├── BookGenre.php │ │ │ ├── BookWithGenre.php │ │ │ ├── Card.php │ │ │ ├── CardNativeEnum.php │ │ │ ├── CardWithDefault.php │ │ │ ├── CardWithNullable.php │ │ │ ├── City.php │ │ │ ├── FaultySwitch.php │ │ │ ├── Library.php │ │ │ ├── Product.php │ │ │ ├── Quantity.php │ │ │ ├── Scale.php │ │ │ ├── Suit.php │ │ │ ├── SwitchStatus.php │ │ │ ├── TypedCard.php │ │ │ ├── TypedCardEnumCompositeId.php │ │ │ ├── TypedCardEnumId.php │ │ │ ├── TypedCardNativeEnum.php │ │ │ ├── Unit.php │ │ │ └── UserStatus.php │ │ ├── Forum/ │ │ │ ├── ForumAvatar.php │ │ │ ├── ForumBoard.php │ │ │ ├── ForumCategory.php │ │ │ ├── ForumEntry.php │ │ │ └── ForumUser.php │ │ ├── GH10132/ │ │ │ ├── Complex.php │ │ │ └── ComplexChild.php │ │ ├── GH10288/ │ │ │ └── GH10288People.php │ │ ├── GH10334/ │ │ │ ├── GH10334Foo.php │ │ │ ├── GH10334FooCollection.php │ │ │ ├── GH10334Product.php │ │ │ ├── GH10334ProductType.php │ │ │ └── GH10334ProductTypeId.php │ │ ├── GH10336/ │ │ │ ├── GH10336Entity.php │ │ │ └── GH10336Relation.php │ │ ├── GH11524/ │ │ │ ├── GH11524Entity.php │ │ │ ├── GH11524Listener.php │ │ │ └── GH11524Relation.php │ │ ├── GH7141/ │ │ │ └── GH7141Article.php │ │ ├── GH7316/ │ │ │ └── GH7316Article.php │ │ ├── GH7717/ │ │ │ ├── GH7717Child.php │ │ │ └── GH7717Parent.php │ │ ├── GH8565/ │ │ │ ├── GH8565Employee.php │ │ │ ├── GH8565Manager.php │ │ │ └── GH8565Person.php │ │ ├── Generic/ │ │ │ ├── BooleanModel.php │ │ │ ├── DateTimeModel.php │ │ │ ├── DecimalModel.php │ │ │ ├── NonAlphaColumnsEntity.php │ │ │ └── SerializationModel.php │ │ ├── GeoNames/ │ │ │ ├── Admin1.php │ │ │ ├── Admin1AlternateName.php │ │ │ ├── City.php │ │ │ └── Country.php │ │ ├── Global/ │ │ │ └── GlobalNamespaceModel.php │ │ ├── Hydration/ │ │ │ ├── EntityWithArrayDefaultArrayValueM2M.php │ │ │ └── SimpleEntity.php │ │ ├── InvalidXml.php │ │ ├── Issue5989/ │ │ │ ├── Issue5989Employee.php │ │ │ ├── Issue5989Manager.php │ │ │ └── Issue5989Person.php │ │ ├── Issue9300/ │ │ │ ├── Issue9300Child.php │ │ │ └── Issue9300Parent.php │ │ ├── JoinedInheritanceType/ │ │ │ ├── AnotherChildClass.php │ │ │ ├── ChildClass.php │ │ │ └── RootClass.php │ │ ├── Legacy/ │ │ │ ├── LegacyArticle.php │ │ │ ├── LegacyCar.php │ │ │ ├── LegacyUser.php │ │ │ └── LegacyUserReference.php │ │ ├── ManyToManyPersister/ │ │ │ ├── ChildClass.php │ │ │ ├── OtherParentClass.php │ │ │ └── ParentClass.php │ │ ├── MixedToOneIdentity/ │ │ │ ├── CompositeToOneKeyState.php │ │ │ └── Country.php │ │ ├── Navigation/ │ │ │ ├── NavCountry.php │ │ │ ├── NavPhotos.php │ │ │ ├── NavPointOfInterest.php │ │ │ ├── NavTour.php │ │ │ └── NavUser.php │ │ ├── NonPublicSchemaJoins/ │ │ │ └── User.php │ │ ├── NullDefault/ │ │ │ └── NullDefaultColumn.php │ │ ├── OneToOneInverseSideLoad/ │ │ │ ├── InverseSide.php │ │ │ └── OwningSide.php │ │ ├── OneToOneInverseSideWithAssociativeIdLoad/ │ │ │ ├── InverseSide.php │ │ │ ├── InverseSideIdTarget.php │ │ │ └── OwningSide.php │ │ ├── OneToOneSingleTableInheritance/ │ │ │ ├── Cat.php │ │ │ ├── LitterBox.php │ │ │ └── Pet.php │ │ ├── Pagination/ │ │ │ ├── Company.php │ │ │ ├── Department.php │ │ │ ├── Logo.php │ │ │ ├── User.php │ │ │ └── User1.php │ │ ├── PersistentObject/ │ │ │ ├── PersistentCollectionContent.php │ │ │ ├── PersistentCollectionHolder.php │ │ │ └── PersistentEntity.php │ │ ├── Project/ │ │ │ ├── Project.php │ │ │ ├── ProjectId.php │ │ │ ├── ProjectInvalidMapping.php │ │ │ └── ProjectName.php │ │ ├── PropertyHooks/ │ │ │ ├── MappingVirtualProperty.php │ │ │ └── User.php │ │ ├── Quote/ │ │ │ ├── Address.php │ │ │ ├── City.php │ │ │ ├── FullAddress.php │ │ │ ├── Group.php │ │ │ ├── NumericEntity.php │ │ │ ├── Phone.php │ │ │ └── User.php │ │ ├── ReadonlyProperties/ │ │ │ ├── Author.php │ │ │ ├── Book.php │ │ │ └── SimpleBook.php │ │ ├── Reflection/ │ │ │ ├── AbstractEmbeddable.php │ │ │ ├── ArrayObjectExtendingClass.php │ │ │ ├── ClassWithMixedProperties.php │ │ │ ├── ConcreteEmbeddable.php │ │ │ └── ParentClass.php │ │ ├── Routing/ │ │ │ ├── RoutingLeg.php │ │ │ ├── RoutingLocation.php │ │ │ ├── RoutingRoute.php │ │ │ └── RoutingRouteBooking.php │ │ ├── StockExchange/ │ │ │ ├── Bond.php │ │ │ ├── Market.php │ │ │ └── Stock.php │ │ ├── Taxi/ │ │ │ ├── Car.php │ │ │ ├── Driver.php │ │ │ ├── PaidRide.php │ │ │ └── Ride.php │ │ ├── Tweet/ │ │ │ ├── Tweet.php │ │ │ ├── User.php │ │ │ └── UserList.php │ │ ├── TypedProperties/ │ │ │ ├── Contact.php │ │ │ ├── UserTyped.php │ │ │ └── UserTypedWithCustomTypedField.php │ │ ├── Upsertable/ │ │ │ ├── Insertable.php │ │ │ └── Updatable.php │ │ ├── ValueConversionType/ │ │ │ ├── AuxiliaryEntity.php │ │ │ ├── InversedManyToManyCompositeIdEntity.php │ │ │ ├── InversedManyToManyCompositeIdForeignKeyEntity.php │ │ │ ├── InversedManyToManyEntity.php │ │ │ ├── InversedManyToManyExtraLazyEntity.php │ │ │ ├── InversedOneToManyCompositeIdEntity.php │ │ │ ├── InversedOneToManyCompositeIdForeignKeyEntity.php │ │ │ ├── InversedOneToManyEntity.php │ │ │ ├── InversedOneToManyExtraLazyEntity.php │ │ │ ├── InversedOneToOneCompositeIdEntity.php │ │ │ ├── InversedOneToOneCompositeIdForeignKeyEntity.php │ │ │ ├── InversedOneToOneEntity.php │ │ │ ├── OwningManyToManyCompositeIdEntity.php │ │ │ ├── OwningManyToManyCompositeIdForeignKeyEntity.php │ │ │ ├── OwningManyToManyEntity.php │ │ │ ├── OwningManyToManyExtraLazyEntity.php │ │ │ ├── OwningManyToOneCompositeIdEntity.php │ │ │ ├── OwningManyToOneCompositeIdForeignKeyEntity.php │ │ │ ├── OwningManyToOneEntity.php │ │ │ ├── OwningManyToOneExtraLazyEntity.php │ │ │ ├── OwningManyToOneIdForeignKeyEntity.php │ │ │ ├── OwningOneToOneCompositeIdEntity.php │ │ │ ├── OwningOneToOneCompositeIdForeignKeyEntity.php │ │ │ └── OwningOneToOneEntity.php │ │ ├── ValueObjects/ │ │ │ ├── Name.php │ │ │ └── Person.php │ │ ├── VersionedManyToOne/ │ │ │ ├── Article.php │ │ │ └── Category.php │ │ └── VersionedOneToOne/ │ │ ├── FirstRelatedEntity.php │ │ └── SecondRelatedEntity.php │ ├── ORM/ │ │ ├── AbstractQueryTest.php │ │ ├── Cache/ │ │ │ ├── CacheConfigTest.php │ │ │ ├── CacheKeyTest.php │ │ │ ├── CacheLoggerChainTest.php │ │ │ ├── DefaultCacheFactoryTest.php │ │ │ ├── DefaultCacheTest.php │ │ │ ├── DefaultCollectionHydratorTest.php │ │ │ ├── DefaultEntityHydratorTest.php │ │ │ ├── DefaultQueryCacheTest.php │ │ │ ├── DefaultRegionTest.php │ │ │ ├── FileLockRegionTest.php │ │ │ ├── Persister/ │ │ │ │ ├── Collection/ │ │ │ │ │ ├── CollectionPersisterTestCase.php │ │ │ │ │ ├── NonStrictReadWriteCachedCollectionPersisterTest.php │ │ │ │ │ ├── ReadOnlyCachedCollectionPersisterTest.php │ │ │ │ │ └── ReadWriteCachedCollectionPersisterTest.php │ │ │ │ └── Entity/ │ │ │ │ ├── EntityPersisterTestCase.php │ │ │ │ ├── NonStrictReadWriteCachedEntityPersisterTest.php │ │ │ │ ├── ReadOnlyCachedEntityPersisterTest.php │ │ │ │ └── ReadWriteCachedEntityPersisterTest.php │ │ │ ├── RegionTestCase.php │ │ │ └── StatisticsCacheLoggerTest.php │ │ ├── ConfigurationTest.php │ │ ├── Entity/ │ │ │ └── ConstructorTest.php │ │ ├── EntityManagerTest.php │ │ ├── EntityNotFoundExceptionTest.php │ │ ├── Event/ │ │ │ └── OnClassMetadataNotFoundEventArgsTest.php │ │ ├── Functional/ │ │ │ ├── AbstractFetchEagerTest.php │ │ │ ├── AbstractManyToManyAssociationTestCase.php │ │ │ ├── AdvancedAssociationTest.php │ │ │ ├── AdvancedDqlQueryTest.php │ │ │ ├── BasicFunctionalTest.php │ │ │ ├── CascadeRemoveOrderTest.php │ │ │ ├── ClassTableInheritanceSecondTest.php │ │ │ ├── ClassTableInheritanceTest.php │ │ │ ├── ClearEventTest.php │ │ │ ├── CompositeKeyRelationsTest.php │ │ │ ├── CompositePrimaryKeyTest.php │ │ │ ├── CompositePrimaryKeyWithAssociationsTest.php │ │ │ ├── CustomFunctionsTest.php │ │ │ ├── CustomIdObjectTypeTest.php │ │ │ ├── DatabaseDriverTest.php │ │ │ ├── DatabaseDriverTestCase.php │ │ │ ├── DefaultTimeExpressionTest.php │ │ │ ├── DefaultTimeExpressionXmlTest.php │ │ │ ├── DefaultValuesTest.php │ │ │ ├── DetachedEntityTest.php │ │ │ ├── EagerFetchCollectionTest.php │ │ │ ├── EagerFetchOneToManyWithCompositeKeyTest.php │ │ │ ├── EntityListenersTest.php │ │ │ ├── EntityRepositoryCriteriaTest.php │ │ │ ├── EntityRepositoryTest.php │ │ │ ├── EnumTest.php │ │ │ ├── ExtraLazyCollectionTest.php │ │ │ ├── FlushEventTest.php │ │ │ ├── GH7877Test.php │ │ │ ├── HydrationCacheTest.php │ │ │ ├── IdentityMapTest.php │ │ │ ├── IndexByAssociationTest.php │ │ │ ├── InsertableUpdatableTest.php │ │ │ ├── InvalidMappingDefinitionTest.php │ │ │ ├── JoinedTableCompositeKeyTest.php │ │ │ ├── LifecycleCallbackTest.php │ │ │ ├── Locking/ │ │ │ │ ├── GearmanLockTest.php │ │ │ │ ├── LockAgentWorker.php │ │ │ │ ├── LockTest.php │ │ │ │ └── OptimisticTest.php │ │ │ ├── ManyToManyBasicAssociationTest.php │ │ │ ├── ManyToManyBidirectionalAssociationTest.php │ │ │ ├── ManyToManyEventTest.php │ │ │ ├── ManyToManySelfReferentialAssociationTest.php │ │ │ ├── ManyToManyUnidirectionalAssociationTest.php │ │ │ ├── MappedSuperclassTest.php │ │ │ ├── NativeQueryTest.php │ │ │ ├── NewOperatorTest.php │ │ │ ├── OneToManyBidirectionalAssociationTest.php │ │ │ ├── OneToManyOrphanRemovalTest.php │ │ │ ├── OneToManySelfReferentialAssociationTest.php │ │ │ ├── OneToManyUnidirectionalAssociationTest.php │ │ │ ├── OneToOneBidirectionalAssociationTest.php │ │ │ ├── OneToOneEagerLoadingTest.php │ │ │ ├── OneToOneInverseSideLoadAfterDqlQueryTest.php │ │ │ ├── OneToOneInverseSideWithAssociativeIdLoadAfterDqlQueryTest.php │ │ │ ├── OneToOneOrphanRemovalTest.php │ │ │ ├── OneToOneSelfReferentialAssociationTest.php │ │ │ ├── OneToOneSingleTableInheritanceTest.php │ │ │ ├── OneToOneUnidirectionalAssociationTest.php │ │ │ ├── OrderedCollectionTest.php │ │ │ ├── OrderedJoinedTableInheritanceCollectionTest.php │ │ │ ├── PaginationTest.php │ │ │ ├── ParserResultSerializationTest.php │ │ │ ├── ParserResults/ │ │ │ │ └── single_select_2_17_0.txt │ │ │ ├── PersistentCollectionCriteriaTest.php │ │ │ ├── PersistentCollectionTest.php │ │ │ ├── PostFlushEventTest.php │ │ │ ├── PostLoadEventTest.php │ │ │ ├── PrePersistEventTest.php │ │ │ ├── PropertyHooksTest.php │ │ │ ├── ProxiesLikeEntitiesTest.php │ │ │ ├── QueryBuilderParenthesisTest.php │ │ │ ├── QueryCacheTest.php │ │ │ ├── QueryDqlFunctionTest.php │ │ │ ├── QueryIterableTest.php │ │ │ ├── QueryParameterTest.php │ │ │ ├── QueryTest.php │ │ │ ├── ReadOnlyTest.php │ │ │ ├── ReadonlyPropertiesTest.php │ │ │ ├── ReferenceProxyTest.php │ │ │ ├── ResultCacheTest.php │ │ │ ├── SQLFilterTest.php │ │ │ ├── SchemaTool/ │ │ │ │ ├── CompanySchemaTest.php │ │ │ │ ├── DBAL483Test.php │ │ │ │ ├── DDC214Test.php │ │ │ │ ├── MySqlSchemaToolTest.php │ │ │ │ └── PostgreSqlSchemaToolTest.php │ │ │ ├── SchemaValidatorTest.php │ │ │ ├── SecondLevelCacheCompositePrimaryKeyTest.php │ │ │ ├── SecondLevelCacheCompositePrimaryKeyWithAssociationsTest.php │ │ │ ├── SecondLevelCacheConcurrentTest.php │ │ │ ├── SecondLevelCacheCountQueriesTest.php │ │ │ ├── SecondLevelCacheCriteriaTest.php │ │ │ ├── SecondLevelCacheExtraLazyCollectionTest.php │ │ │ ├── SecondLevelCacheFunctionalTestCase.php │ │ │ ├── SecondLevelCacheJoinTableInheritanceTest.php │ │ │ ├── SecondLevelCacheManyToManyTest.php │ │ │ ├── SecondLevelCacheManyToOneTest.php │ │ │ ├── SecondLevelCacheOneToManyTest.php │ │ │ ├── SecondLevelCacheOneToOneTest.php │ │ │ ├── SecondLevelCacheQueryCacheTest.php │ │ │ ├── SecondLevelCacheRepositoryTest.php │ │ │ ├── SecondLevelCacheSingleTableInheritanceTest.php │ │ │ ├── SecondLevelCacheTest.php │ │ │ ├── SequenceGeneratorTest.php │ │ │ ├── SingleTableCompositeKeyTest.php │ │ │ ├── SingleTableInheritanceTest.php │ │ │ ├── StandardEntityPersisterTest.php │ │ │ ├── Ticket/ │ │ │ │ ├── DDC1040Test.php │ │ │ │ ├── DDC1041Test.php │ │ │ │ ├── DDC1043Test.php │ │ │ │ ├── DDC1080Test.php │ │ │ │ ├── DDC1113Test.php │ │ │ │ ├── DDC1129Test.php │ │ │ │ ├── DDC1163Test.php │ │ │ │ ├── DDC117Test.php │ │ │ │ ├── DDC1181Test.php │ │ │ │ ├── DDC1193Test.php │ │ │ │ ├── DDC1209Test.php │ │ │ │ ├── DDC1225Test.php │ │ │ │ ├── DDC1228Test.php │ │ │ │ ├── DDC1238Test.php │ │ │ │ ├── DDC1250Test.php │ │ │ │ ├── DDC1300Test.php │ │ │ │ ├── DDC1301Test.php │ │ │ │ ├── DDC1306Test.php │ │ │ │ ├── DDC1335Test.php │ │ │ │ ├── DDC1400Test.php │ │ │ │ ├── DDC142Test.php │ │ │ │ ├── DDC1430Test.php │ │ │ │ ├── DDC1436Test.php │ │ │ │ ├── DDC144Test.php │ │ │ │ ├── DDC1452Test.php │ │ │ │ ├── DDC1454Test.php │ │ │ │ ├── DDC1458Test.php │ │ │ │ ├── DDC1461Test.php │ │ │ │ ├── DDC1514Test.php │ │ │ │ ├── DDC1515Test.php │ │ │ │ ├── DDC1526Test.php │ │ │ │ ├── DDC1545Test.php │ │ │ │ ├── DDC1548Test.php │ │ │ │ ├── DDC1595Test.php │ │ │ │ ├── DDC163Test.php │ │ │ │ ├── DDC1643Test.php │ │ │ │ ├── DDC1654Test.php │ │ │ │ ├── DDC1655Test.php │ │ │ │ ├── DDC1666Test.php │ │ │ │ ├── DDC1685Test.php │ │ │ │ ├── DDC168Test.php │ │ │ │ ├── DDC1695Test.php │ │ │ │ ├── DDC1707Test.php │ │ │ │ ├── DDC1719Test.php │ │ │ │ ├── DDC1757Test.php │ │ │ │ ├── DDC1778Test.php │ │ │ │ ├── DDC1787Test.php │ │ │ │ ├── DDC1843Test.php │ │ │ │ ├── DDC1884Test.php │ │ │ │ ├── DDC1885Test.php │ │ │ │ ├── DDC1918Test.php │ │ │ │ ├── DDC1925Test.php │ │ │ │ ├── DDC192Test.php │ │ │ │ ├── DDC1995Test.php │ │ │ │ ├── DDC1998Test.php │ │ │ │ ├── DDC199Test.php │ │ │ │ ├── DDC2012Test.php │ │ │ │ ├── DDC2074Test.php │ │ │ │ ├── DDC2084Test.php │ │ │ │ ├── DDC2090Test.php │ │ │ │ ├── DDC2106Test.php │ │ │ │ ├── DDC211Test.php │ │ │ │ ├── DDC2138Test.php │ │ │ │ ├── DDC2175Test.php │ │ │ │ ├── DDC2182Test.php │ │ │ │ ├── DDC2214Test.php │ │ │ │ ├── DDC2224Test.php │ │ │ │ ├── DDC2252Test.php │ │ │ │ ├── DDC2306Test.php │ │ │ │ ├── DDC2346Test.php │ │ │ │ ├── DDC2350Test.php │ │ │ │ ├── DDC2359Test.php │ │ │ │ ├── DDC237Test.php │ │ │ │ ├── DDC2387Test.php │ │ │ │ ├── DDC2415Test.php │ │ │ │ ├── DDC2494Test.php │ │ │ │ ├── DDC2519Test.php │ │ │ │ ├── DDC2575Test.php │ │ │ │ ├── DDC2579Test.php │ │ │ │ ├── DDC258Test.php │ │ │ │ ├── DDC2602Test.php │ │ │ │ ├── DDC2655Test.php │ │ │ │ ├── DDC2660Test.php │ │ │ │ ├── DDC2692Test.php │ │ │ │ ├── DDC2759Test.php │ │ │ │ ├── DDC2775Test.php │ │ │ │ ├── DDC2780Test.php │ │ │ │ ├── DDC2790Test.php │ │ │ │ ├── DDC279Test.php │ │ │ │ ├── DDC2825Test.php │ │ │ │ ├── DDC2862Test.php │ │ │ │ ├── DDC2895Test.php │ │ │ │ ├── DDC2931Test.php │ │ │ │ ├── DDC2943Test.php │ │ │ │ ├── DDC2984Test.php │ │ │ │ ├── DDC2996Test.php │ │ │ │ ├── DDC3033Test.php │ │ │ │ ├── DDC3042Test.php │ │ │ │ ├── DDC3068Test.php │ │ │ │ ├── DDC309Test.php │ │ │ │ ├── DDC3103Test.php │ │ │ │ ├── DDC3123Test.php │ │ │ │ ├── DDC3160Test.php │ │ │ │ ├── DDC3170Test.php │ │ │ │ ├── DDC3192Test.php │ │ │ │ ├── DDC3223Test.php │ │ │ │ ├── DDC3300Test.php │ │ │ │ ├── DDC3303Test.php │ │ │ │ ├── DDC331Test.php │ │ │ │ ├── DDC3330Test.php │ │ │ │ ├── DDC3346Test.php │ │ │ │ ├── DDC345Test.php │ │ │ │ ├── DDC353Test.php │ │ │ │ ├── DDC3582Test.php │ │ │ │ ├── DDC3597Test.php │ │ │ │ ├── DDC3634Test.php │ │ │ │ ├── DDC3644Test.php │ │ │ │ ├── DDC3719Test.php │ │ │ │ ├── DDC371Test.php │ │ │ │ ├── DDC3785Test.php │ │ │ │ ├── DDC381Test.php │ │ │ │ ├── DDC3967Test.php │ │ │ │ ├── DDC4003Test.php │ │ │ │ ├── DDC4024Test.php │ │ │ │ ├── DDC422Test.php │ │ │ │ ├── DDC425Test.php │ │ │ │ ├── DDC440Test.php │ │ │ │ ├── DDC444Test.php │ │ │ │ ├── DDC448Test.php │ │ │ │ ├── DDC493Test.php │ │ │ │ ├── DDC512Test.php │ │ │ │ ├── DDC513Test.php │ │ │ │ ├── DDC522Test.php │ │ │ │ ├── DDC531Test.php │ │ │ │ ├── DDC5684Test.php │ │ │ │ ├── DDC588Test.php │ │ │ │ ├── DDC599Test.php │ │ │ │ ├── DDC618Test.php │ │ │ │ ├── DDC6303Test.php │ │ │ │ ├── DDC633Test.php │ │ │ │ ├── DDC6460Test.php │ │ │ │ ├── DDC6558Test.php │ │ │ │ ├── DDC656Test.php │ │ │ │ ├── DDC6573Test.php │ │ │ │ ├── DDC657Test.php │ │ │ │ ├── DDC698Test.php │ │ │ │ ├── DDC69Test.php │ │ │ │ ├── DDC719Test.php │ │ │ │ ├── DDC735Test.php │ │ │ │ ├── DDC736Test.php │ │ │ │ ├── DDC748Test.php │ │ │ │ ├── DDC767Test.php │ │ │ │ ├── DDC7969Test.php │ │ │ │ ├── DDC809Test.php │ │ │ │ ├── DDC812Test.php │ │ │ │ ├── DDC832Test.php │ │ │ │ ├── DDC837Test.php │ │ │ │ ├── DDC849Test.php │ │ │ │ ├── DDC881Test.php │ │ │ │ ├── DDC933Test.php │ │ │ │ ├── DDC949Test.php │ │ │ │ ├── DDC960Test.php │ │ │ │ ├── DDC992Test.php │ │ │ │ ├── GH10049/ │ │ │ │ │ ├── GH10049Test.php │ │ │ │ │ ├── ReadOnlyPropertyInheritor.php │ │ │ │ │ └── ReadOnlyPropertyOwner.php │ │ │ │ ├── GH10132Test.php │ │ │ │ ├── GH10288Test.php │ │ │ │ ├── GH10334Test.php │ │ │ │ ├── GH10336Test.php │ │ │ │ ├── GH10348Test.php │ │ │ │ ├── GH10387Test.php │ │ │ │ ├── GH10450Test.php │ │ │ │ ├── GH10454Test.php │ │ │ │ ├── GH10462Test.php │ │ │ │ ├── GH10473Test.php │ │ │ │ ├── GH10531Test.php │ │ │ │ ├── GH10532Test.php │ │ │ │ ├── GH10566Test.php │ │ │ │ ├── GH10625Test.php │ │ │ │ ├── GH10661/ │ │ │ │ │ ├── GH10661Test.php │ │ │ │ │ ├── InvalidChildEntity.php │ │ │ │ │ └── InvalidEntity.php │ │ │ │ ├── GH10747Test.php │ │ │ │ ├── GH10752Test.php │ │ │ │ ├── GH10808Test.php │ │ │ │ ├── GH10869Test.php │ │ │ │ ├── GH10880Test.php │ │ │ │ ├── GH10889Test.php │ │ │ │ ├── GH10912Test.php │ │ │ │ ├── GH10913Test.php │ │ │ │ ├── GH10927Test.php │ │ │ │ ├── GH11017/ │ │ │ │ │ ├── GH11017Entity.php │ │ │ │ │ ├── GH11017Enum.php │ │ │ │ │ └── GH11017Test.php │ │ │ │ ├── GH11037/ │ │ │ │ │ ├── EntityStatus.php │ │ │ │ │ ├── GH11037Test.php │ │ │ │ │ ├── IntEntityStatus.php │ │ │ │ │ ├── InvalidEntityWithTypedEnum.php │ │ │ │ │ ├── StringEntityStatus.php │ │ │ │ │ └── ValidEntityWithTypedEnum.php │ │ │ │ ├── GH11058Test.php │ │ │ │ ├── GH11072/ │ │ │ │ │ ├── GH11072EntityAdvanced.php │ │ │ │ │ ├── GH11072EntityBasic.php │ │ │ │ │ └── GH11072Test.php │ │ │ │ ├── GH11112Test.php │ │ │ │ ├── GH11135Test.php │ │ │ │ ├── GH11149/ │ │ │ │ │ ├── EagerProduct.php │ │ │ │ │ ├── EagerProductTranslation.php │ │ │ │ │ ├── GH11149Test.php │ │ │ │ │ └── Locale.php │ │ │ │ ├── GH11163Test.php │ │ │ │ ├── GH11199Test.php │ │ │ │ ├── GH11341Test.php │ │ │ │ ├── GH11386/ │ │ │ │ │ ├── GH11386EntityCart.php │ │ │ │ │ ├── GH11386EntityCustomer.php │ │ │ │ │ ├── GH11386EnumType.php │ │ │ │ │ └── GH11386Test.php │ │ │ │ ├── GH11487Test.php │ │ │ │ ├── GH11500Test.php │ │ │ │ ├── GH11501Test.php │ │ │ │ ├── GH11524Test.php │ │ │ │ ├── GH11982Test.php │ │ │ │ ├── GH12166/ │ │ │ │ │ ├── GH12166Test.php │ │ │ │ │ └── LazyEntityWithReadonlyId.php │ │ │ │ ├── GH12174Test.php │ │ │ │ ├── GH12183Test.php │ │ │ │ ├── GH12254Test.php │ │ │ │ ├── GH2947Test.php │ │ │ │ ├── GH5562Test.php │ │ │ │ ├── GH5742Test.php │ │ │ │ ├── GH5762Test.php │ │ │ │ ├── GH5804Test.php │ │ │ │ ├── GH5887Test.php │ │ │ │ ├── GH5988Test.php │ │ │ │ ├── GH5998Test.php │ │ │ │ ├── GH6029Test.php │ │ │ │ ├── GH6123Test.php │ │ │ │ ├── GH6141Test.php │ │ │ │ ├── GH6217Test.php │ │ │ │ ├── GH6362Test.php │ │ │ │ ├── GH6394Test.php │ │ │ │ ├── GH6402Test.php │ │ │ │ ├── GH6464Test.php │ │ │ │ ├── GH6499OneToManyRelationshipTest.php │ │ │ │ ├── GH6499OneToOneRelationshipTest.php │ │ │ │ ├── GH6499Test.php │ │ │ │ ├── GH6531Test.php │ │ │ │ ├── GH6682Test.php │ │ │ │ ├── GH6699Test.php │ │ │ │ ├── GH6740Test.php │ │ │ │ ├── GH6823Test.php │ │ │ │ ├── GH6937Test.php │ │ │ │ ├── GH7006Test.php │ │ │ │ ├── GH7012Test.php │ │ │ │ ├── GH7062Test.php │ │ │ │ ├── GH7067Test.php │ │ │ │ ├── GH7068Test.php │ │ │ │ ├── GH7079Test.php │ │ │ │ ├── GH7180Test.php │ │ │ │ ├── GH7259Test.php │ │ │ │ ├── GH7286Test.php │ │ │ │ ├── GH7366Test.php │ │ │ │ ├── GH7496WithToIterableTest.php │ │ │ │ ├── GH7505Test.php │ │ │ │ ├── GH7512Test.php │ │ │ │ ├── GH7629Test.php │ │ │ │ ├── GH7661Test.php │ │ │ │ ├── GH7684Test.php │ │ │ │ ├── GH7717Test.php │ │ │ │ ├── GH7735Test.php │ │ │ │ ├── GH7737Test.php │ │ │ │ ├── GH7761Test.php │ │ │ │ ├── GH7767Test.php │ │ │ │ ├── GH7820Test.php │ │ │ │ ├── GH7829Test.php │ │ │ │ ├── GH7836Test.php │ │ │ │ ├── GH7864Test.php │ │ │ │ ├── GH7869Test.php │ │ │ │ ├── GH7875Test.php │ │ │ │ ├── GH7941Test.php │ │ │ │ ├── GH8055Test.php │ │ │ │ ├── GH8061Test.php │ │ │ │ ├── GH8127Test.php │ │ │ │ ├── GH8217Test.php │ │ │ │ ├── GH8415Test.php │ │ │ │ ├── GH8415ToManyAssociationTest.php │ │ │ │ ├── GH8443Test.php │ │ │ │ ├── GH8499Test.php │ │ │ │ ├── GH8663Test.php │ │ │ │ ├── GH8914Test.php │ │ │ │ ├── GH9027Test.php │ │ │ │ ├── GH9109Test.php │ │ │ │ ├── GH9192Test.php │ │ │ │ ├── GH9230Test.php │ │ │ │ ├── GH9335Test.php │ │ │ │ ├── GH9467/ │ │ │ │ │ ├── GH9467Test.php │ │ │ │ │ ├── JoinedInheritanceChild.php │ │ │ │ │ ├── JoinedInheritanceNonInsertableColumn.php │ │ │ │ │ ├── JoinedInheritanceNonUpdatableColumn.php │ │ │ │ │ ├── JoinedInheritanceNonWritableColumn.php │ │ │ │ │ ├── JoinedInheritanceRoot.php │ │ │ │ │ └── JoinedInheritanceWritableColumn.php │ │ │ │ ├── GH9516Test.php │ │ │ │ ├── GH9579Test.php │ │ │ │ ├── GH9807Test.php │ │ │ │ ├── Issue5989Test.php │ │ │ │ ├── Issue9300Test.php │ │ │ │ ├── SwitchContextWithFilter/ │ │ │ │ │ ├── AbstractTestCase.php │ │ │ │ │ ├── ChangeFiltersTest.php │ │ │ │ │ ├── Entity/ │ │ │ │ │ │ ├── Insurance.php │ │ │ │ │ │ ├── Order.php │ │ │ │ │ │ ├── Patient.php │ │ │ │ │ │ ├── PatientInsurance.php │ │ │ │ │ │ ├── Practice.php │ │ │ │ │ │ ├── PrimaryPatInsurance.php │ │ │ │ │ │ ├── SecondaryPatInsurance.php │ │ │ │ │ │ └── User.php │ │ │ │ │ ├── SQLFilter/ │ │ │ │ │ │ ├── CompanySQLFilter.php │ │ │ │ │ │ └── PracticeContextSQLFilter.php │ │ │ │ │ └── SwitchContextTest.php │ │ │ │ ├── SwitchContextWithFilterAndIndexedRelation/ │ │ │ │ │ ├── Category.php │ │ │ │ │ ├── CategoryTypeSQLFilter.php │ │ │ │ │ ├── ChangeFiltersTest.php │ │ │ │ │ └── Company.php │ │ │ │ ├── Ticket2481Test.php │ │ │ │ ├── Ticket4646InstanceOfAbstractTest.php │ │ │ │ ├── Ticket4646InstanceOfMultiLevelTest.php │ │ │ │ ├── Ticket4646InstanceOfParametricTest.php │ │ │ │ ├── Ticket4646InstanceOfTest.php │ │ │ │ └── Ticket4646InstanceOfWithMultipleParametersTest.php │ │ │ ├── TypeTest.php │ │ │ ├── TypeValueSqlTest.php │ │ │ ├── UnitOfWorkLifecycleTest.php │ │ │ ├── ValueConversionType/ │ │ │ │ ├── ManyToManyCompositeIdForeignKeyTest.php │ │ │ │ ├── ManyToManyCompositeIdTest.php │ │ │ │ ├── ManyToManyCriteriaMatchingTest.php │ │ │ │ ├── ManyToManyExtraLazyTest.php │ │ │ │ ├── ManyToManyTest.php │ │ │ │ ├── OneToManyCompositeIdForeignKeyTest.php │ │ │ │ ├── OneToManyCompositeIdTest.php │ │ │ │ ├── OneToManyCriteriaMatchingTest.php │ │ │ │ ├── OneToManyExtraLazyTest.php │ │ │ │ ├── OneToManyTest.php │ │ │ │ ├── OneToOneCompositeIdForeignKeyTest.php │ │ │ │ ├── OneToOneCompositeIdTest.php │ │ │ │ └── OneToOneTest.php │ │ │ ├── ValueObjectsTest.php │ │ │ └── VersionedOneToOneTest.php │ │ ├── Hydration/ │ │ │ ├── AbstractHydratorTest.php │ │ │ ├── ArrayHydratorTest.php │ │ │ ├── CustomHydratorTest.php │ │ │ ├── HydrationTestCase.php │ │ │ ├── ObjectHydratorTest.php │ │ │ ├── ResultSetMappingTest.php │ │ │ ├── ScalarColumnHydratorTest.php │ │ │ ├── ScalarHydratorTest.php │ │ │ ├── SimpleObjectHydratorTest.php │ │ │ └── SingleScalarHydratorTest.php │ │ ├── Id/ │ │ │ ├── AssignedGeneratorTest.php │ │ │ └── SequenceGeneratorTest.php │ │ ├── Internal/ │ │ │ ├── HydrationCompleteHandlerTest.php │ │ │ ├── Node.php │ │ │ ├── StronglyConnectedComponentsTest.php │ │ │ ├── TopologicalSortTest.php │ │ │ └── UnitOfWork/ │ │ │ └── InsertBatchTest.php │ │ ├── LazyCriteriaCollectionTest.php │ │ ├── Mapping/ │ │ │ ├── AnsiQuoteStrategyTest.php │ │ │ ├── AssociationMappingTest.php │ │ │ ├── AttributeDriverTest.php │ │ │ ├── AttributeReaderTest.php │ │ │ ├── BasicInheritanceMappingTest.php │ │ │ ├── ClassMetadataBuilderTest.php │ │ │ ├── ClassMetadataFactoryTest.php │ │ │ ├── ClassMetadataLoadEventTest.php │ │ │ ├── ClassMetadataTest.php │ │ │ ├── DefaultQuoteStrategyTest.php │ │ │ ├── DiscriminatorColumnMappingTest.php │ │ │ ├── EmbeddedClassMappingTest.php │ │ │ ├── EntityListenerResolverTest.php │ │ │ ├── FieldBuilderTest.php │ │ │ ├── FieldMappingTest.php │ │ │ ├── Fixtures/ │ │ │ │ └── AttributeEntityWithNestedJoinColumns.php │ │ │ ├── InverseSideMappingTest.php │ │ │ ├── JoinColumnMappingTest.php │ │ │ ├── JoinTableMappingTest.php │ │ │ ├── ManyToManyOwningSideMappingTest.php │ │ │ ├── ManyToOneAssociationMappingTest.php │ │ │ ├── MappingDriverTestCase.php │ │ │ ├── NamingStrategy/ │ │ │ │ ├── CustomPascalNamingStrategy.php │ │ │ │ └── JoinColumnClassNamingStrategy.php │ │ │ ├── NamingStrategyTest.php │ │ │ ├── OneToOneOwningSideMappingTest.php │ │ │ ├── OwningSideMappingTest.php │ │ │ ├── PropertyAccessors/ │ │ │ │ ├── EnumPropertyAccessorTest.php │ │ │ │ ├── ObjectCastPropertyAccessorTest.php │ │ │ │ ├── RawValuePropertyAccessorTest.php │ │ │ │ ├── ReadOnlyAccessorTest.php │ │ │ │ └── TypedNoDefaultPropertyAccessorTest.php │ │ │ ├── QuoteStrategyTest.php │ │ │ ├── ReflectionEmbeddedPropertyTest.php │ │ │ ├── ReflectionReadonlyPropertyTest.php │ │ │ ├── StaticPHPMappingDriverTest.php │ │ │ ├── Symfony/ │ │ │ │ ├── DriverTestCase.php │ │ │ │ └── XmlDriverTest.php │ │ │ ├── TableMappingTest.php │ │ │ ├── ToManyAssociationMappingTest.php │ │ │ ├── TypedEnumFieldMapperTest.php │ │ │ ├── TypedFieldMapper/ │ │ │ │ └── CustomIntAsStringTypedFieldMapper.php │ │ │ ├── TypedFieldMapperTest.php │ │ │ ├── XmlMappingDriverTest.php │ │ │ ├── invalid_xml/ │ │ │ │ └── Doctrine.Tests.Models.InvalidXml.dcm.xml │ │ │ ├── php/ │ │ │ │ ├── Doctrine.Tests.Models.Enums.Card.php │ │ │ │ ├── Doctrine.Tests.Models.TypedProperties.UserTypedWithCustomTypedField.php │ │ │ │ ├── Doctrine.Tests.Models.Upsertable.Insertable.php │ │ │ │ ├── Doctrine.Tests.Models.Upsertable.Updatable.php │ │ │ │ └── Doctrine.Tests.ORM.Mapping.GH10288EnumTypePerson.php │ │ │ ├── xml/ │ │ │ │ ├── CatNoId.dcm.xml │ │ │ │ ├── DDC2429Book.orm.xml │ │ │ │ ├── DDC2429Novel.orm.xml │ │ │ │ ├── Doctrine.Tests.Models.CMS.CmsAddress.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.CMS.CmsUser.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Cache.City.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Company.CompanyContract.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Company.CompanyFixContract.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Company.CompanyFlexContract.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Company.CompanyFlexUltraContract.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Company.CompanyPerson.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Customer.CustomerType.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC117.DDC117Translation.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC1476.DDC1476EntityWithDefaultFieldType.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC2825.ExplicitSchemaAndTable.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC2825.SchemaAndTableInTableName.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC3293.DDC3293Address.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC3293.DDC3293User.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC3293.DDC3293UserPrefixed.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC3579.DDC3579Admin.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC3579.DDC3579User.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC5934.DDC5934BaseContract.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC5934.DDC5934Contract.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC869.DDC869ChequePayment.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC869.DDC869CreditCardPayment.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC869.DDC869Payment.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC889.DDC889Class.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC889.DDC889Entity.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC889.DDC889SuperClass.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC964.DDC964Admin.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC964.DDC964Guest.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.DDC964.DDC964User.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Enums.Card.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.GH7141.GH7141Article.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.GH7316.GH7316Article.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Generic.BooleanModel.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Project.Project.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Project.ProjectInvalidMapping.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.TypedProperties.UserTyped.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.TypedProperties.UserTypedWithCustomTypedField.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Upsertable.Insertable.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.Upsertable.Updatable.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.ValueObjects.Name.dcm.xml │ │ │ │ ├── Doctrine.Tests.Models.ValueObjects.Person.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Functional.XmlLegacyTimeEntity.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Functional.XmlTimeEntity.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.Animal.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.BlogPost.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.BlogPostComment.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.CTI.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.Comment.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.DDC1170Entity.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.DDC807Entity.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.GH10288EnumTypePerson.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.ReservedWordInTableColumn.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.SingleTableEntityIncompleteDiscriminatorColumnMapping.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.SingleTableEntityNoDiscriminatorColumnMapping.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.User.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.UserIncorrectAttributes.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.UserIncorrectIndex.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.UserIncorrectUniqueConstraint.dcm.xml │ │ │ │ ├── Doctrine.Tests.ORM.Mapping.UserMissingAttributes.dcm.xml │ │ │ │ └── Doctrine.Tests.ORM.Mapping.XMLSLC.dcm.xml │ │ │ └── yaml/ │ │ │ ├── Doctrine.Tests.Models.TypedProperties.UserTypedWithCustomTypedField.dcm.yml │ │ │ └── Doctrine.Tests.ORM.Mapping.GH10288EnumTypePerson.dcm.yml │ │ ├── ORMInvalidArgumentExceptionTest.php │ │ ├── ORMSetupTest.php │ │ ├── Performance/ │ │ │ └── SecondLevelCacheTest.php │ │ ├── PersistentCollectionTest.php │ │ ├── Persisters/ │ │ │ ├── BasicEntityPersisterCompositeTypeParametersTest.php │ │ │ ├── BasicEntityPersisterCompositeTypeSqlTest.php │ │ │ ├── BasicEntityPersisterTypeValueSqlTest.php │ │ │ ├── BinaryIdPersisterTest.php │ │ │ ├── Exception/ │ │ │ │ └── UnrecognizedFieldTest.php │ │ │ └── ManyToManyPersisterTest.php │ │ ├── Proxy/ │ │ │ └── ProxyFactoryTest.php │ │ ├── Query/ │ │ │ ├── CustomTreeWalkersJoinTest.php │ │ │ ├── CustomTreeWalkersTest.php │ │ │ ├── DeleteSqlGenerationTest.php │ │ │ ├── ExprTest.php │ │ │ ├── FilterCollectionTest.php │ │ │ ├── LanguageRecognitionTest.php │ │ │ ├── LexerTest.php │ │ │ ├── NativeQueryTest.php │ │ │ ├── ParameterTypeInfererTest.php │ │ │ ├── ParserResultTest.php │ │ │ ├── ParserTest.php │ │ │ ├── QueryExpressionVisitorTest.php │ │ │ ├── QueryTest.php │ │ │ ├── SelectSqlGenerationTest.php │ │ │ ├── SqlExpressionVisitorTest.php │ │ │ ├── SqlWalkerTest.php │ │ │ └── UpdateSqlGenerationTest.php │ │ ├── QueryBuilderTest.php │ │ ├── Repository/ │ │ │ └── DefaultRepositoryFactoryTest.php │ │ ├── Tools/ │ │ │ ├── AttachEntityListenersListenerTest.php │ │ │ ├── Console/ │ │ │ │ ├── Command/ │ │ │ │ │ ├── ClearCacheCollectionRegionCommandTest.php │ │ │ │ │ ├── ClearCacheEntityRegionCommandTest.php │ │ │ │ │ ├── ClearCacheQueryRegionCommandTest.php │ │ │ │ │ ├── Debug/ │ │ │ │ │ │ ├── DebugEntityListenersDoctrineCommandTest.php │ │ │ │ │ │ ├── DebugEventManagerDoctrineCommandTest.php │ │ │ │ │ │ └── Fixtures/ │ │ │ │ │ │ ├── BarListener.php │ │ │ │ │ │ ├── BazListener.php │ │ │ │ │ │ └── FooListener.php │ │ │ │ │ ├── InfoCommandTest.php │ │ │ │ │ ├── MappingDescribeCommandTest.php │ │ │ │ │ ├── RunDqlCommandTest.php │ │ │ │ │ ├── SchemaTool/ │ │ │ │ │ │ ├── CommandTestCase.php │ │ │ │ │ │ ├── CreateCommandTest.php │ │ │ │ │ │ ├── DropCommandTest.php │ │ │ │ │ │ └── Models/ │ │ │ │ │ │ └── Keyboard.php │ │ │ │ │ └── ValidateSchemaCommandTest.php │ │ │ │ ├── ConsoleRunnerTest.php │ │ │ │ └── MetadataFilterTest.php │ │ │ ├── DebugTest.php │ │ │ ├── Pagination/ │ │ │ │ ├── CountOutputWalkerTest.php │ │ │ │ ├── CountWalkerTest.php │ │ │ │ ├── LimitSubqueryOutputWalkerTest.php │ │ │ │ ├── LimitSubqueryWalkerTest.php │ │ │ │ ├── PaginationTestCase.php │ │ │ │ ├── PaginatorTest.php │ │ │ │ ├── RootTypeWalkerTest.php │ │ │ │ └── WhereInWalkerTest.php │ │ │ ├── ResolveTargetEntityListenerTest.php │ │ │ ├── SchemaToolTest.php │ │ │ ├── SchemaValidatorTest.php │ │ │ └── TestAsset/ │ │ │ ├── ChildClass.php │ │ │ ├── ChildWithSameAttributesClass.php │ │ │ └── ParentClass.php │ │ ├── UnitOfWorkTest.php │ │ └── Utility/ │ │ ├── HierarchyDiscriminatorResolverTest.php │ │ ├── IdentifierFlattenerEnumIdTest.php │ │ └── IdentifierFlattenerTest.php │ ├── OrmFunctionalTestCase.php │ ├── OrmTestCase.php │ ├── Proxy/ │ │ └── AutoloaderTest.php │ ├── TestInit.php │ └── TestUtil.php └── dbproperties.xml.dev ================================================ FILE CONTENTS ================================================ ================================================ FILE: .doctrine-project.json ================================================ { "active": true, "name": "Object Relational Mapper", "shortName": "ORM", "slug": "orm", "docsSlug": "doctrine-orm", "versions": [ { "name": "4.0", "branchName": "4.0.x", "slug": "latest", "upcoming": true }, { "name": "3.7", "branchName": "3.7.x", "slug": "3.7", "upcoming": true }, { "name": "3.6", "branchName": "3.6.x", "slug": "3.6", "current": true }, { "name": "2.21", "branchName": "2.21.x", "slug": "2.21", "upcoming": true }, { "name": "2.20", "branchName": "2.20.x", "slug": "2.20", "maintained": true }, { "name": "2.19", "slug": "2.19", "maintained": false }, { "name": "2.18", "slug": "2.18", "maintained": false }, { "name": "2.17", "slug": "2.17", "maintained": false }, { "name": "2.16", "slug": "2.16", "maintained": false }, { "name": "2.15", "slug": "2.15", "maintained": false }, { "name": "2.14", "slug": "2.14", "maintained": false } ] } ================================================ FILE: .gitattributes ================================================ /.github export-ignore /ci export-ignore /docs export-ignore /tests export-ignore /tools export-ignore .doctrine-project.json export-ignore .gitattributes export-ignore .gitignore export-ignore build.properties export-ignore build.properties.dev export-ignore build.xml export-ignore CONTRIBUTING.md export-ignore phpunit.xml.dist export-ignore phpcs.xml.dist export-ignore phpbench.json export-ignore phpstan.neon export-ignore phpstan-baseline.neon export-ignore phpstan-dbal3.neon export-ignore phpstan-params.neon export-ignore phpstan-persistence2.neon export-ignore ================================================ FILE: .github/PULL_REQUEST_TEMPLATE/Failing_Test.md ================================================ --- name: 🐞 Failing Test about: You found a bug and have a failing Unit or Functional test? 🔨 --- ### Failing Test | Q | A |------------ | ------ | BC Break | yes/no | Version | x.y.z #### Summary ================================================ FILE: .github/PULL_REQUEST_TEMPLATE/Improvement.md ================================================ --- name: ⚙ Improvement about: You have some improvement to make Doctrine better? 🎁 --- ### Improvement | Q | A |------------ | ------ | New Feature | yes | RFC | yes/no | BC Break | yes/no #### Summary ================================================ FILE: .github/PULL_REQUEST_TEMPLATE/New_Feature.md ================================================ --- name: 🎉 New Feature about: You have implemented some neat idea that you want to make part of Doctrine? 🎩 --- ### New Feature | Q | A |------------ | ------ | New Feature | yes | RFC | yes/no | BC Break | yes/no #### Summary ================================================ FILE: .github/dependabot.yml ================================================ version: 2 updates: - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" labels: - "CI" target-branch: "2.20.x" ================================================ FILE: .github/workflows/coding-standards.yml ================================================ name: "Coding Standards" on: pull_request: branches: - "*.x" paths: - .github/workflows/coding-standards.yml - bin/** - composer.* - src/** - phpcs.xml.dist - tests/** push: branches: - "*.x" paths: - .github/workflows/coding-standards.yml - bin/** - composer.* - src/** - phpcs.xml.dist - tests/** jobs: coding-standards: uses: "doctrine/.github/.github/workflows/coding-standards.yml@13.1.0" ================================================ FILE: .github/workflows/composer-lint.yml ================================================ name: "Composer Lint" on: pull_request: branches: - "*.x" paths: - ".github/workflows/composer-lint.yml" - "composer.json" push: branches: - "*.x" paths: - ".github/workflows/composer-lint.yml" - "composer.json" jobs: composer-lint: name: "Composer Lint" uses: "doctrine/.github/.github/workflows/composer-lint.yml@13.1.0" ================================================ FILE: .github/workflows/continuous-integration.yml ================================================ name: "CI: PHPUnit" on: pull_request: branches: - "*.x" paths: - .github/workflows/continuous-integration.yml - ci/** - composer.* - src/** - tests/** push: branches: - "*.x" paths: - .github/workflows/continuous-integration.yml - ci/** - composer.* - src/** - tests/** env: fail-fast: true jobs: phpunit-smoke-check: name: > SQLite - ${{ format('PHP {0} - DBAL {1} - ext. {2} - proxy {3}', matrix.php-version || 'Ø', matrix.dbal-version || 'Ø', matrix.extension || 'Ø', matrix.proxy || 'Ø' ) }} runs-on: "ubuntu-22.04" strategy: matrix: php-version: - "8.1" - "8.2" - "8.3" - "8.4" - "8.5" dbal-version: - "default" - "3.7" extension: - "sqlite3" - "pdo_sqlite" deps: - "highest" stability: - "stable" native_lazy: - "0" include: - php-version: "8.2" dbal-version: "4@dev" extension: "pdo_sqlite" stability: "stable" native_lazy: "0" - php-version: "8.2" dbal-version: "4@dev" extension: "sqlite3" stability: "stable" native_lazy: "0" - php-version: "8.1" dbal-version: "default" deps: "lowest" extension: "pdo_sqlite" stability: "stable" native_lazy: "0" - php-version: "8.4" dbal-version: "default" deps: "highest" extension: "pdo_sqlite" stability: "stable" native_lazy: "1" - php-version: "8.4" dbal-version: "default" deps: "highest" extension: "sqlite3" stability: "dev" native_lazy: "1" steps: - name: "Checkout" uses: "actions/checkout@v6" with: fetch-depth: 2 - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: php-version: "${{ matrix.php-version }}" extensions: "apcu, pdo, ${{ matrix.extension }}" coverage: "pcov" ini-values: "zend.assertions=1, apc.enable_cli=1" - name: "Allow dev dependencies" run: | composer config minimum-stability dev composer remove --no-update --dev phpbench/phpbench phpdocumentor/guides-cli composer require --no-update symfony/console:^8 symfony/var-exporter:^8 doctrine/dbal:^4.4 composer require --dev --no-update symfony/cache:^8 if: "${{ matrix.stability == 'dev' }}" - name: "Require specific DBAL version" run: "composer require doctrine/dbal ^${{ matrix.dbal-version }} --no-update" if: "${{ matrix.dbal-version != 'default' }}" - name: "Downgrade VarExporter" run: 'composer require --no-update "symfony/var-exporter:^6.4 || ^7.4"' if: "${{ matrix.native_lazy == '0' }}" - name: "Install dependencies with Composer" uses: "ramsey/composer-install@v3" with: composer-options: "--ignore-platform-req=php+" dependency-versions: "${{ matrix.deps }}" - name: "Run PHPUnit" run: "vendor/bin/phpunit -c ci/github/phpunit/${{ matrix.extension }}.xml --coverage-clover=coverage-no-cache.xml" env: ENABLE_SECOND_LEVEL_CACHE: 0 ENABLE_NATIVE_LAZY_OBJECTS: ${{ matrix.native_lazy }} - name: "Run PHPUnit with Second Level Cache and PHPUnit 10" run: | vendor/bin/phpunit -c ci/github/phpunit/${{ matrix.extension }}.xml \ --exclude-group=performance,non-cacheable,locking_functional \ --coverage-clover=coverage-cache.xml if: "${{ matrix.php-version == '8.1' }}" env: ENABLE_SECOND_LEVEL_CACHE: 1 ENABLE_NATIVE_LAZY_OBJECTS: ${{ matrix.native_lazy }} - name: "Run PHPUnit with Second Level Cache and PHPUnit 11+" run: | vendor/bin/phpunit -c ci/github/phpunit/${{ matrix.extension }}.xml \ --exclude-group=performance \ --exclude-group=non-cacheable \ --exclude-group=locking_functional \ --coverage-clover=coverage-cache.xml if: "${{ matrix.php-version != '8.1' }}" env: ENABLE_SECOND_LEVEL_CACHE: 1 ENABLE_NATIVE_LAZY_OBJECTS: ${{ matrix.native_lazy }} - name: "Upload coverage file" uses: "actions/upload-artifact@v7" with: name: "phpunit-${{ matrix.extension }}-${{ matrix.php-version }}-${{ matrix.dbal-version }}-${{ matrix.deps }}-${{ matrix.stability }}-${{ matrix.native_lazy }}-coverage" path: "coverage*.xml" phpunit-deprecations: name: "PHPUnit (fail on deprecations)" runs-on: "ubuntu-24.04" steps: - name: "Checkout" uses: "actions/checkout@v5" with: fetch-depth: 2 - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: php-version: "8.5" extensions: "apcu, pdo, sqlite3" coverage: "pcov" ini-values: "zend.assertions=1, apc.enable_cli=1" - name: "Allow dev dependencies" run: composer config minimum-stability dev - name: "Install dependencies with Composer" uses: "ramsey/composer-install@v3" with: composer-options: "--ignore-platform-req=php+" dependency-versions: "highest" - name: "Run PHPUnit" run: "vendor/bin/phpunit -c ci/github/phpunit/sqlite3.xml --fail-on-deprecation" env: ENABLE_SECOND_LEVEL_CACHE: 0 ENABLE_NATIVE_LAZY_OBJECTS: 1 phpunit-postgres: name: > ${{ format('PostgreSQL {0} - PHP {1} - DBAL {2} - ext. {3}', matrix.postgres-version || 'Ø', matrix.php-version || 'Ø', matrix.dbal-version || 'Ø', matrix.extension || 'Ø' ) }} runs-on: "ubuntu-22.04" needs: "phpunit-smoke-check" strategy: matrix: php-version: - "8.2" - "8.3" - "8.4" - "8.5" dbal-version: - "default" - "3.7" postgres-version: - "17" extension: - pdo_pgsql - pgsql include: - php-version: "8.2" dbal-version: "4@dev" postgres-version: "14" extension: pdo_pgsql - php-version: "8.2" dbal-version: "3.7" postgres-version: "9.6" extension: pdo_pgsql services: postgres: image: "postgres:${{ matrix.postgres-version }}" env: POSTGRES_PASSWORD: "postgres" options: >- --health-cmd "pg_isready" ports: - "5432:5432" steps: - name: "Checkout" uses: "actions/checkout@v6" with: fetch-depth: 2 - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: php-version: "${{ matrix.php-version }}" extensions: "pgsql pdo_pgsql" coverage: "pcov" ini-values: "zend.assertions=1, apc.enable_cli=1" - name: "Require specific DBAL version" run: "composer require doctrine/dbal ^${{ matrix.dbal-version }} --no-update" if: "${{ matrix.dbal-version != 'default' }}" - name: "Install dependencies with Composer" uses: "ramsey/composer-install@v3" with: composer-options: "--ignore-platform-req=php+" - name: "Run PHPUnit" run: "vendor/bin/phpunit -c ci/github/phpunit/pdo_pgsql.xml --coverage-clover=coverage.xml" - name: "Upload coverage file" uses: "actions/upload-artifact@v7" with: name: "${{ github.job }}-${{ matrix.postgres-version }}-${{ matrix.php-version }}-${{ matrix.dbal-version }}-${{ matrix.extension }}-coverage" path: "coverage.xml" phpunit-mariadb: name: > ${{ format('MariaDB {0} - PHP {1} - DBAL {2} - ext. {3}', matrix.mariadb-version || 'Ø', matrix.php-version || 'Ø', matrix.dbal-version || 'Ø', matrix.extension || 'Ø' ) }} runs-on: "ubuntu-22.04" needs: "phpunit-smoke-check" strategy: matrix: php-version: - "8.2" - "8.3" - "8.4" - "8.5" dbal-version: - "default" - "3.7" - "4@dev" mariadb-version: - "11.4" extension: - "mysqli" - "pdo_mysql" services: mariadb: image: "mariadb:${{ matrix.mariadb-version }}" env: MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: yes MARIADB_DATABASE: "doctrine_tests" options: >- --health-cmd "healthcheck.sh --connect --innodb_initialized" ports: - "3306:3306" steps: - name: "Checkout" uses: "actions/checkout@v6" with: fetch-depth: 2 - name: "Require specific DBAL version" run: "composer require doctrine/dbal ^${{ matrix.dbal-version }} --no-update" if: "${{ matrix.dbal-version != 'default' }}" - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: php-version: "${{ matrix.php-version }}" coverage: "pcov" ini-values: "zend.assertions=1, apc.enable_cli=1" extensions: "${{ matrix.extension }}" - name: "Install dependencies with Composer" uses: "ramsey/composer-install@v3" with: composer-options: "--ignore-platform-req=php+" - name: "Run PHPUnit" run: "vendor/bin/phpunit -c ci/github/phpunit/${{ matrix.extension }}.xml --coverage-clover=coverage.xml" - name: "Upload coverage file" uses: "actions/upload-artifact@v7" with: name: "${{ github.job }}-${{ matrix.mariadb-version }}-${{ matrix.extension }}-${{ matrix.php-version }}-${{ matrix.dbal-version }}-coverage" path: "coverage.xml" phpunit-mysql: name: > ${{ format('MySQL {0} - PHP {1} - DBAL {2} - ext. {3}', matrix.mysql-version || 'Ø', matrix.php-version || 'Ø', matrix.dbal-version || 'Ø', matrix.extension || 'Ø' ) }} runs-on: "ubuntu-22.04" needs: "phpunit-smoke-check" strategy: matrix: php-version: - "8.2" - "8.3" - "8.4" - "8.5" dbal-version: - "default" - "3.7" mysql-version: - "5.7" - "8.0" extension: - "mysqli" - "pdo_mysql" include: - php-version: "8.2" dbal-version: "4@dev" mysql-version: "8.0" extension: "mysqli" - php-version: "8.2" dbal-version: "4@dev" mysql-version: "8.0" extension: "pdo_mysql" services: mysql: image: "mysql:${{ matrix.mysql-version }}" options: >- --health-cmd "mysqladmin ping --silent" -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -e MYSQL_DATABASE=doctrine_tests ports: - "3306:3306" steps: - name: "Checkout" uses: "actions/checkout@v6" with: fetch-depth: 2 - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: php-version: "${{ matrix.php-version }}" coverage: "pcov" ini-values: "zend.assertions=1, apc.enable_cli=1" extensions: "${{ matrix.extension }}" - name: "Require specific DBAL version" run: "composer require doctrine/dbal ^${{ matrix.dbal-version }} --no-update" if: "${{ matrix.dbal-version != 'default' }}" - name: "Install dependencies with Composer" uses: "ramsey/composer-install@v3" with: composer-options: "--ignore-platform-req=php+" - name: "Run PHPUnit" run: "vendor/bin/phpunit -c ci/github/phpunit/${{ matrix.extension }}.xml --coverage-clover=coverage-no-cache.xml" env: ENABLE_SECOND_LEVEL_CACHE: 0 - name: "Run PHPUnit with Second Level Cache and PHPUnit 10" run: | vendor/bin/phpunit -c ci/github/phpunit/${{ matrix.extension }}.xml \ --exclude-group=performance,non-cacheable,locking_functional \ --coverage-clover=coverage-no-cache.xml" if: "${{ matrix.php-version == '8.1' }}" env: ENABLE_SECOND_LEVEL_CACHE: 1 - name: "Run PHPUnit with Second Level Cache and PHPUnit 11+" run: | vendor/bin/phpunit -c ci/github/phpunit/${{ matrix.extension }}.xml \ --exclude-group=performance \ --exclude-group=non-cacheable \ --exclude-group=locking_functional \ --coverage-clover=coverage-no-cache.xml if: "${{ matrix.php-version != '8.1' }}" env: ENABLE_SECOND_LEVEL_CACHE: 1 - name: "Upload coverage files" uses: "actions/upload-artifact@v7" with: name: "${{ github.job }}-${{ matrix.mysql-version }}-${{ matrix.extension }}-${{ matrix.php-version }}-${{ matrix.dbal-version }}-coverage" path: "coverage*.xml" upload_coverage: name: "Upload coverage to Codecov" runs-on: "ubuntu-22.04" # Only run on PRs from forks if: "github.event.pull_request.head.repo.full_name != github.repository" needs: - "phpunit-smoke-check" - "phpunit-postgres" - "phpunit-mariadb" - "phpunit-mysql" steps: - name: "Checkout" uses: "actions/checkout@v6" with: fetch-depth: 2 - name: "Download coverage files" uses: "actions/download-artifact@v8" with: path: "reports" - name: "Upload to Codecov" uses: "codecov/codecov-action@v5" with: directory: reports env: CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" ================================================ FILE: .github/workflows/documentation.yml ================================================ name: "Documentation" on: pull_request: branches: - "*.x" paths: - ".github/workflows/documentation.yml" - "docs/**" push: branches: - "*.x" paths: - ".github/workflows/documentation.yml" - "docs/**" jobs: documentation: name: "Documentation" uses: "doctrine/.github/.github/workflows/documentation.yml@13.1.0" ================================================ FILE: .github/workflows/phpbench.yml ================================================ name: "Performance benchmark" on: pull_request: branches: - "*.x" paths: - .github/workflows/phpbench.yml - composer.* - src/** - phpbench.json - tests/** push: branches: - "*.x" paths: - .github/workflows/phpbench.yml - composer.* - src/** - phpbench.json - tests/** env: fail-fast: true jobs: phpbench: name: "PHPBench" runs-on: "ubuntu-22.04" strategy: matrix: php-version: - "8.1" steps: - name: "Checkout" uses: "actions/checkout@v6" with: fetch-depth: 2 - name: "Install PHP" uses: "shivammathur/setup-php@v2" with: php-version: "${{ matrix.php-version }}" coverage: "pcov" ini-values: "zend.assertions=1, apc.enable_cli=1" - name: "Install dependencies with Composer" uses: "ramsey/composer-install@v3" - name: "Run PHPBench" run: "vendor/bin/phpbench run --report=default" ================================================ FILE: .github/workflows/release-on-milestone-closed.yml ================================================ name: "Automatic Releases" on: milestone: types: - "closed" jobs: release: uses: "doctrine/.github/.github/workflows/release-on-milestone-closed.yml@13.1.0" secrets: GIT_AUTHOR_EMAIL: ${{ secrets.GIT_AUTHOR_EMAIL }} GIT_AUTHOR_NAME: ${{ secrets.GIT_AUTHOR_NAME }} ORGANIZATION_ADMIN_TOKEN: ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} SIGNING_SECRET_KEY: ${{ secrets.SIGNING_SECRET_KEY }} ================================================ FILE: .github/workflows/stale.yml ================================================ name: 'Close stale pull requests' on: schedule: - cron: '0 3 * * *' jobs: stale: runs-on: ubuntu-latest steps: - uses: actions/stale@v9 with: stale-pr-message: > There hasn't been any activity on this pull request in the past 90 days, so it has been marked as stale and it will be closed automatically if no further activity occurs in the next 7 days. If you want to continue working on it, please leave a comment. close-pr-message: > This pull request was closed due to inactivity. days-before-stale: -1 days-before-pr-stale: 90 days-before-pr-close: 7 ================================================ FILE: .github/workflows/static-analysis.yml ================================================ name: "Static Analysis" on: pull_request: branches: - "*.x" paths: - .github/workflows/static-analysis.yml - composer.* - src/** - phpstan* - tests/StaticAnalysis/** push: branches: - "*.x" paths: - .github/workflows/static-analysis.yml - composer.* - src/** - phpstan* - tests/StaticAnalysis/** jobs: static-analysis-phpstan: name: Static Analysis with PHPStan runs-on: ubuntu-22.04 strategy: matrix: include: - dbal-version: default config: phpstan.neon - dbal-version: 3.8.2 config: phpstan-dbal3.neon steps: - name: "Checkout code" uses: "actions/checkout@v6" - name: Install PHP uses: shivammathur/setup-php@v2 with: coverage: none php-version: "8.4" tools: cs2pr - name: Require specific DBAL version run: "composer require doctrine/dbal ^${{ matrix.dbal-version }} --no-update" if: "${{ matrix.dbal-version != 'default' }}" - name: Install dependencies with Composer uses: ramsey/composer-install@v2 - name: Run static analysis with phpstan/phpstan run: "vendor/bin/phpstan analyse -c ${{ matrix.config }} --error-format=checkstyle | cs2pr" ================================================ FILE: .github/workflows/website-schema.yml ================================================ name: "Website config validation" on: pull_request: branches: - "*.x" paths: - ".doctrine-project.json" - ".github/workflows/website-schema.yml" push: branches: - "*.x" paths: - ".doctrine-project.json" - ".github/workflows/website-schema.yml" jobs: json-validate: name: "Validate JSON schema" uses: "doctrine/.github/.github/workflows/website-schema.yml@7.1.0" ================================================ FILE: .gitignore ================================================ build/ logs/ reports/ dist/ download/ /.settings/ .buildpath .project .idea *.iml vendor/ /tests/Doctrine/Performance/history.db /.phpcs-cache composer.lock .phpunit.cache .phpunit.result.cache /*.phpunit.xml ================================================ FILE: CONTRIBUTING.md ================================================ # Contribute to Doctrine Thank you for contributing to Doctrine! Before we can merge your Pull-Request here are some guidelines that you need to follow. These guidelines exist not to annoy you, but to keep the code base clean, unified and future proof. Doctrine has [general contributing guidelines][contributor workflow], make sure you follow them. [contributor workflow]: https://www.doctrine-project.org/contribute/index.html ## Coding Standard This project follows [`doctrine/coding-standard`][coding standard homepage]. You may fix many some of the issues with `vendor/bin/phpcbf`. [coding standard homepage]: https://github.com/doctrine/coding-standard ## Unit-Tests Please try to add a test for your pull-request. * If you want to fix a bug or provide a reproduce case, create a test file in ``tests/Tests/ORM/Functional/Ticket`` with the name of the ticket, ``DDC1234Test.php`` for example. * If you want to contribute new functionality add unit- or functional tests depending on the scope of the feature. You can run the unit-tests by calling ``vendor/bin/phpunit`` from the root of the project. It will run all the tests with an in memory SQLite database. In order to do that, you will need a fresh copy of the ORM, and you will have to run a composer installation in the project: ```sh git clone git@github.com:doctrine/orm.git cd orm composer install ``` You will also need to enable the PHP extension that provides the SQLite driver for PDO: `pdo_sqlite`. How to do so depends on your system, but checking that it is enabled can universally be done with `php -m`: that command should list the extension. To run the testsuite against another database, copy the ``phpunit.xml.dist`` to for example ``mysql.phpunit.xml`` and edit the parameters. You can take a look at the ``ci/github/phpunit`` directory for some examples. Then run: vendor/bin/phpunit -c mysql.phpunit.xml If you do not provide these parameters, the test suite will use an in-memory sqlite database. Tips for creating unit tests: 1. If you put a test into the `Ticket` namespace as described above, put the testcase and all entities into the same class. See `https://github.com/doctrine/orm/tree/3.0.x/tests/Tests/ORM/Functional/Ticket/DDC2306Test.php` for an example. ## Getting merged Please allow us time to review your pull requests. We will give our best to review everything as fast as possible, but cannot always live up to our own expectations. Thank you very much again for your contribution! ================================================ FILE: LICENSE ================================================ Copyright (c) Doctrine Project Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ | [4.0.x][4.0] | [3.7.x][3.7] | [3.6.x][3.6] | [2.21.x][2.21] | [2.20.x][2.20] | |:------------------------------------------------------:|:------------------------------------------------------:|:------------------------------------------------------:|:--------------------------------------------------------:|:--------------------------------------------------------:| | [![Build status][4.0 image]][4.0 workflow] | [![Build status][3.7 image]][3.7 workflow] | [![Build status][3.6 image]][3.6 workflow] | [![Build status][2.21 image]][2.21 workflow] | [![Build status][2.20 image]][2.20 workflow] | | [![Coverage Status][4.0 coverage image]][4.0 coverage] | [![Coverage Status][3.7 coverage image]][3.7 coverage] | [![Coverage Status][3.6 coverage image]][3.6 coverage] | [![Coverage Status][2.21 coverage image]][2.21 coverage] | [![Coverage Status][2.20 coverage image]][2.20 coverage] | Doctrine ORM is an object-relational mapper for PHP 8.1+ that provides transparent persistence for PHP objects. It sits on top of a powerful database abstraction layer (DBAL). One of its key features is the option to write database queries in a proprietary object oriented SQL dialect called Doctrine Query Language (DQL), inspired by Hibernate's HQL. This provides developers with a powerful alternative to SQL that maintains flexibility without requiring unnecessary code duplication. ## More resources: * [Website](http://www.doctrine-project.org) * [Documentation](https://www.doctrine-project.org/projects/doctrine-orm/en/stable/index.html) [4.0 image]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml/badge.svg?branch=4.0.x [4.0]: https://github.com/doctrine/orm/tree/4.0.x [4.0 workflow]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml?query=branch%3A4.0.x [4.0 coverage image]: https://codecov.io/gh/doctrine/orm/branch/4.0.x/graph/badge.svg [4.0 coverage]: https://codecov.io/gh/doctrine/orm/branch/4.0.x [3.7 image]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml/badge.svg?branch=3.7.x [3.7]: https://github.com/doctrine/orm/tree/3.7.x [3.7 workflow]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml?query=branch%3A3.7.x [3.7 coverage image]: https://codecov.io/gh/doctrine/orm/branch/3.7.x/graph/badge.svg [3.7 coverage]: https://codecov.io/gh/doctrine/orm/branch/3.7.x [3.6 image]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml/badge.svg?branch=3.6.x [3.6]: https://github.com/doctrine/orm/tree/3.6.x [3.6 workflow]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml?query=branch%3A3.6.x [3.6 coverage image]: https://codecov.io/gh/doctrine/orm/branch/3.6.x/graph/badge.svg [3.6 coverage]: https://codecov.io/gh/doctrine/orm/branch/3.6.x [2.21 image]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml/badge.svg?branch=2.21.x [2.21]: https://github.com/doctrine/orm/tree/2.21.x [2.21 workflow]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml?query=branch%3A2.21.x [2.21 coverage image]: https://codecov.io/gh/doctrine/orm/branch/2.21.x/graph/badge.svg [2.21 coverage]: https://codecov.io/gh/doctrine/orm/branch/2.21.x [2.20 image]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml/badge.svg?branch=2.20.x [2.20]: https://github.com/doctrine/orm/tree/2.20.x [2.20 workflow]: https://github.com/doctrine/orm/actions/workflows/continuous-integration.yml?query=branch%3A2.20.x [2.20 coverage image]: https://codecov.io/gh/doctrine/orm/branch/2.20.x/graph/badge.svg [2.20 coverage]: https://codecov.io/gh/doctrine/orm/branch/2.20.x ================================================ FILE: SECURITY.md ================================================ Security ======== The Doctrine library is operating very close to your database and as such needs to handle and make assumptions about SQL injection vulnerabilities. It is vital that you understand how Doctrine approaches security, because we cannot protect you from SQL injection. Please read the documentation chapter on Security in Doctrine DBAL and ORM to understand the assumptions we make. - [DBAL Security Page](https://www.doctrine-project.org/projects/doctrine-dbal/en/stable/reference/security.html) - [ORM Security Page](https://www.doctrine-project.org/projects/doctrine-orm/en/stable/reference/security.html) If you find a Security bug in Doctrine, please follow our [Security reporting guidelines](https://www.doctrine-project.org/policies/security.html#reporting). ================================================ FILE: UPGRADE.md ================================================ Note about upgrading: Doctrine uses static and runtime mechanisms to raise awareness about deprecated code. - Use of `@deprecated` docblock that is detected by IDEs (like PHPStorm) or Static Analysis tools (like Psalm, phpstan) - Use of our low-overhead runtime deprecation API, details: https://github.com/doctrine/deprecations/ # Upgrade to 3.x General Notes We recommend you upgrade to DBAL 3 first before upgrading to ORM 3. See the DBAL upgrade docs: https://github.com/doctrine/dbal/blob/3.10.x/UPGRADE.md Rather than doing several major upgrades at once, we recommend you do the following: - upgrade to DBAL 3 - deploy and monitor - upgrade to ORM 3 - deploy and monitor - upgrade to DBAL 4 - deploy and monitor If you are using Symfony, the recommended minimal Doctrine Bundle version is 2.15 to run with ORM 3. At this point, we recommend upgrading to PHP 8.4 first and then directly from ORM 2.19 to 3.5 and up so that you can skip the lazy ghost proxy generation and directly start using native lazy objects. # Upgrade to 3.6 ## Deprecate using string expression for default values in mappings Using a string expression for default values in field mappings is deprecated. Use `Doctrine\DBAL\Schema\DefaultExpression` instances instead. Here is how to address this deprecation when mapping entities using PHP attributes: ```diff use DateTime; +use Doctrine\DBAL\Schema\DefaultExpression\CurrentDate; +use Doctrine\DBAL\Schema\DefaultExpression\CurrentTime; +use Doctrine\DBAL\Schema\DefaultExpression\CurrentTimestamp; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity] final class TimeEntity { #[ORM\Id] #[ORM\Column] public int $id; - #[ORM\Column(options: ['default' => 'CURRENT_TIMESTAMP'], insertable: false, updatable: false)] + #[ORM\Column(options: ['default' => new CurrentTimestamp()], insertable: false, updatable: false)] public DateTime $createdAt; - #[ORM\Column(options: ['default' => 'CURRENT_TIME'], insertable: false, updatable: false)] + #[ORM\Column(options: ['default' => new CurrentTime()], insertable: false, updatable: false)] public DateTime $createdTime; - #[ORM\Column(options: ['default' => 'CURRENT_DATE'], insertable: false, updatable: false)] + #[ORM\Column(options: ['default' => new CurrentDate()], insertable: false, updatable: false)] public DateTime $createdDate; } ``` Here is how to do the same when mapping entities using XML: ```diff - +