%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/tjamichg/cursos.tjamich.gob.mx/vendor/ddeboer/data-import/src/Reader/
Upload File :
Create Path :
Current File : /home/tjamichg/cursos.tjamich.gob.mx/vendor/ddeboer/data-import/src/Reader/DoctrineReader.php

<?php

namespace Ddeboer\DataImport\Reader;

use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\ORM\Internal\Hydration\IterableResult;
use Doctrine\ORM\Query;

/**
 * Reads entities through the Doctrine ORM
 *
 * @author David de Boer <david@ddeboer.nl>
 */
class DoctrineReader implements CountableReader
{
    /**
     * @var ObjectManager
     */
    protected $objectManager;

    /**
     * @var string
     */
    protected $objectName;

    /**
     * @var IterableResult
     */
    protected $iterableResult;

    /**
     * @param ObjectManager $objectManager
     * @param string        $objectName    e.g. YourBundle:YourEntity
     */
    public function __construct(ObjectManager $objectManager, $objectName)
    {
        $this->objectManager = $objectManager;
        $this->objectName = $objectName;
    }

    /**
     * {@inheritdoc}
     */
    public function getFields()
    {
        return $this->objectManager->getClassMetadata($this->objectName)
                 ->getFieldNames();
    }

    /**
     * {@inheritdoc}
     */
    public function current()
    {
        return current($this->iterableResult->current());
    }

    /**
     * {@inheritdoc}
     */
    public function next()
    {
        $this->iterableResult->next();
    }

    /**
     * {@inheritdoc}
     */
    public function key()
    {
        return $this->iterableResult->key();
    }

    /**
     * {@inheritdoc}
     */
    public function valid()
    {
        return $this->iterableResult->valid();
    }

    /**
     * {@inheritdoc}
     */
    public function rewind()
    {
        if (!$this->iterableResult) {
            $query = $this->objectManager->createQuery(
                sprintf('SELECT o FROM %s o', $this->objectName)
            );
            $this->iterableResult = $query->iterate([], Query::HYDRATE_ARRAY);
        }

        $this->iterableResult->rewind();
    }

    /**
     * {@inheritdoc}
     */
    public function count()
    {
        $query = $this->objectManager->createQuery(
            sprintf('SELECT COUNT(o) FROM %s o', $this->objectName)
        );

        return $query->getSingleScalarResult();
    }
}

Zerion Mini Shell 1.0