. */ namespace Doctrine\ORM\Persisters\Entity; use Doctrine\Common\Persistence\Mapping\ClassMetadata; use Doctrine\ORM\Query\ResultSetMapping; /** * A swappable persister context to use as a container for the current * generated query/resultSetMapping/type binding information. * * This class is a utility class to be used only by the persister API * * This object is highly mutable due to performance reasons. Same reasoning * behind its properties being public. * * @author Marco Pivetta */ class CachedPersisterContext { /** * Metadata object that describes the mapping of the mapped entity class. * * @var \Doctrine\ORM\Mapping\ClassMetadata */ public $class; /** * ResultSetMapping that is used for all queries. Is generated lazily once per request. * * @var \Doctrine\ORM\Query\ResultSetMapping */ public $rsm; /** * The map of column names to DBAL mapping types of all prepared columns used * when INSERTing or UPDATEing an entity. * * @var array * * @see \Doctrine\ORM\Persisters\Entity\BasicEntityPersister#prepareInsertData($entity) * @see \Doctrine\ORM\Persisters\Entity\BasicEntityPersister#prepareUpdateData($entity) */ public $columnTypes = array(); /** * The map of quoted column names. * * @var array * * @see \Doctrine\ORM\Persisters\Entity\BasicEntityPersister#prepareInsertData($entity) * @see \Doctrine\ORM\Persisters\Entity\BasicEntityPersister#prepareUpdateData($entity) */ public $quotedColumns = array(); /** * The INSERT SQL statement used for entities handled by this persister. * This SQL is only generated once per request, if at all. * * @var string */ public $insertSql = ''; /** * The SELECT column list SQL fragment used for querying entities by this persister. * This SQL fragment is only generated once per request, if at all. * * @var string */ public $selectColumnListSql; /** * The JOIN SQL fragment used to eagerly load all many-to-one and one-to-one * associations configured as FETCH_EAGER, as well as all inverse one-to-one associations. * * @var string */ public $selectJoinSql; /** * Counter for creating unique SQL table and column aliases. * * @var integer */ public $sqlAliasCounter = 0; /** * Map from class names (FQCN) to the corresponding generated SQL table aliases. * * @var array */ public $sqlTableAliases = array(); /** * @param ClassMetadata $class * @param ResultSetMapping $rsm */ public function __construct( ClassMetadata $class, ResultSetMapping $rsm ) { $this->class = $class; $this->rsm = $rsm; } }