Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
primogenial
/
languages
/
wp-content
/
plugins
/
mailpoet
/
vendor-prefixed
/
doctrine
/
orm
/
lib
/
Doctrine
/
ORM
:
EntityRepository.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php declare (strict_types=1); namespace MailPoetVendor\Doctrine\ORM; if (!defined('ABSPATH')) exit; use BadMethodCallException; use MailPoetVendor\Doctrine\Common\Collections\Collection; use MailPoetVendor\Doctrine\Common\Collections\Criteria; use MailPoetVendor\Doctrine\Common\Collections\Selectable; use MailPoetVendor\Doctrine\DBAL\LockMode; use MailPoetVendor\Doctrine\Deprecations\Deprecation; use MailPoetVendor\Doctrine\Inflector\Inflector; use MailPoetVendor\Doctrine\Inflector\InflectorFactory; use MailPoetVendor\Doctrine\ORM\Mapping\ClassMetadata; use MailPoetVendor\Doctrine\ORM\Query\ResultSetMappingBuilder; use MailPoetVendor\Doctrine\ORM\Repository\Exception\InvalidMagicMethodCall; use MailPoetVendor\Doctrine\Persistence\ObjectRepository; use function array_slice; use function lcfirst; use function sprintf; use function strpos; use function substr; class EntityRepository implements ObjectRepository, Selectable { protected $_entityName; protected $_em; protected $_class; private static $inflector; public function __construct(EntityManagerInterface $em, Mapping\ClassMetadata $class) { $this->_entityName = $class->name; $this->_em = $em; $this->_class = $class; } public function createQueryBuilder($alias, $indexBy = null) { return $this->_em->createQueryBuilder()->select($alias)->from($this->_entityName, $alias, $indexBy); } public function createResultSetMappingBuilder($alias) { $rsm = new ResultSetMappingBuilder($this->_em, ResultSetMappingBuilder::COLUMN_RENAMING_INCREMENT); $rsm->addRootEntityFromClassMetadata($this->_entityName, $alias); return $rsm; } public function createNamedQuery($queryName) { Deprecation::trigger('doctrine/orm', 'https://github.com/doctrine/orm/issues/8592', 'Named Queries are deprecated, here "%s" on entity %s. Move the query logic into EntityRepository', $queryName, $this->_class->name); return $this->_em->createQuery($this->_class->getNamedQuery($queryName)); } public function createNativeNamedQuery($queryName) { Deprecation::trigger('doctrine/orm', 'https://github.com/doctrine/orm/issues/8592', 'Named Native Queries are deprecated, here "%s" on entity %s. Move the query logic into EntityRepository', $queryName, $this->_class->name); $queryMapping = $this->_class->getNamedNativeQuery($queryName); $rsm = new Query\ResultSetMappingBuilder($this->_em); $rsm->addNamedNativeQueryMapping($this->_class, $queryMapping); return $this->_em->createNativeQuery($queryMapping['query'], $rsm); } public function clear() { Deprecation::trigger('doctrine/orm', 'https://github.com/doctrine/orm/issues/8460', 'Calling %s() is deprecated and will not be supported in Doctrine ORM 3.0.', __METHOD__); $this->_em->clear($this->_class->rootEntityName); } public function find($id, $lockMode = null, $lockVersion = null) { return $this->_em->find($this->_entityName, $id, $lockMode, $lockVersion); } public function findAll() { return $this->findBy([]); } public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null) { $persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName); return $persister->loadAll($criteria, $orderBy, $limit, $offset); } public function findOneBy(array $criteria, ?array $orderBy = null) { $persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName); return $persister->load($criteria, null, null, [], null, 1, $orderBy); } public function count(array $criteria) { return $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName)->count($criteria); } public function __call($method, $arguments) { if (strpos($method, 'findBy') === 0) { return $this->resolveMagicCall('findBy', substr($method, 6), $arguments); } if (strpos($method, 'findOneBy') === 0) { return $this->resolveMagicCall('findOneBy', substr($method, 9), $arguments); } if (strpos($method, 'countBy') === 0) { return $this->resolveMagicCall('count', substr($method, 7), $arguments); } throw new BadMethodCallException(sprintf('Undefined method "%s". The method name must start with ' . 'either findBy, findOneBy or countBy!', $method)); } protected function getEntityName() { return $this->_entityName; } public function getClassName() { return $this->getEntityName(); } protected function getEntityManager() { return $this->_em; } protected function getClassMetadata() { return $this->_class; } public function matching(Criteria $criteria) { $persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName); return new LazyCriteriaCollection($persister, $criteria); } private function resolveMagicCall(string $method, string $by, array $arguments) { if (!$arguments) { throw InvalidMagicMethodCall::onMissingParameter($method . $by); } if (self::$inflector === null) { self::$inflector = InflectorFactory::create()->build(); } $fieldName = lcfirst(self::$inflector->classify($by)); if (!($this->_class->hasField($fieldName) || $this->_class->hasAssociation($fieldName))) { throw InvalidMagicMethodCall::becauseFieldNotFoundIn($this->_entityName, $fieldName, $method . $by); } return $this->{$method}([$fieldName => $arguments[0]], ...array_slice($arguments, 1)); } }