为什么某些Doctrine Entity对象打印输出包含超过1,000,000多行?

时间:2016-03-02 17:07:18

标签: debugging orm doctrine-orm output

我有一些相当无辜的ORM代码:

    /** @var $motor Motor */
    $motor = $this->getRepository(Motor::class)->findOneBy(array(
        'resourceProduct' => $productId
    ));

当我想要打印出一个属性时,打印出来就好了,就像这样:

    print_r($motor->getModel()); // "ABC"

但是当我想打印出整个物体时,我遇到了麻烦。像这样:

    print_r($motor);             

输出超过1,000,000行,然后退出并显示以下错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted
(tried to allocate 127664128 bytes) in MotorFactory.php on line XX

打印出来的内容是什么?

我不能在这里发布所有内容,只是一个经过编辑的代码段:

Motor Object
(
    [id:Motor:private] => 731
    [resourceProduct:Motor:private] => DoctrineProxies\__CG__\ResourceProduct Object
    (
        [__initializer__] => Closure Object
        (
            [static] => Array
            (
                [entityPersister] => Doctrine\ORM\Persisters\Entity\BasicEntityPersister Object
                (
                    [class:protected] => Doctrine\ORM\Mapping\ClassMetadata Object
                    [conn:protected] => Doctrine\DBAL\Connection Object
                    (
                        [_config:protected] => Doctrine\ORM\Configuration Object
                        (
                            [_attributes:protected] => Array
                            (
                                [metadataCacheImpl] => Doctrine\Common\Cache\ArrayCache Object
                                (
                                    [data:Doctrine\Common\Cache\ArrayCache:private] => Array
                                    (
                                        [dc2_b1e855bc8c5c80316087e39e6c34bc26_[MotorFrame$CLASSMETADATA][1]] => Array

                                        [dc2_b1e855bc8c5c80316087e39e6c34bc26_[Motor$CLASSMETADATA][1]] => Array

                                        [dc2_b1e855bc8c5c80316087e39e6c34bc26_[ResourceProduct$CLASSMETADATA][1]] => Array
                                    )
                                )

                                [queryCacheImpl] => Doctrine\Common\Cache\ArrayCache Object
                                (
                                    [data:Doctrine\Common\Cache\ArrayCache:private] => Array

                                [resultCacheImpl] => Doctrine\Common\Cache\ArrayCache Object
                                (

它只是继续打开,打开和打开,在此之后1048583行压痕水平为124个空格并且没有停止的迹象。

这里发生了什么?

我的期望是,我会得到我的好的,需要Motor对象,只有10个漂亮而整洁的属性,但我会得到某种怪物。

0 个答案:

没有答案