Symfony2 - Doctrine返回大的未被发现的对象

时间:2015-07-31 23:37:52

标签: php symfony doctrine-orm doctrine

我在项目中使用Symfony2和Doctrine。我想从数据库中获取一些数据。所以我在控制器中创建了简单的代码

$repository = $this->getDoctrine()
                ->getRepository('AppBundle:TransactionDefined');


$defined = $repository->findOneBy(
    array(
      'description' => $transaction->getDescription(),
      'recipient' => $transaction->getRecipient(),
      'accountNumber' => $transaction->getAccountNumber(),
      'title' => $transaction->getClearTitle()
    )
);

在我看来,我应该得到TransactionDefined对象

但我得到了奇怪数据的大对象。我的代码出了什么问题?

object(AppBundle\Entity\TransactionDefined)#645 (6) {


["category":protected]=>
  object(Proxies\__CG__\AppBundle\Entity\TransactionCategory)#656 (6) {
    ["__initializer__"]=>
    object(Closure)#648 (3) {
      ["static"]=>
      array(2) {
        ["entityPersister"]=>
        object(Doctrine\ORM\Persisters\BasicEntityPersister)#646 (14) {
          ["class":protected]=>
          object(Doctrine\ORM\Mapping\ClassMetadata)#596 (37) {
            ["name"]=>
            string(36) "AppBundle\Entity\TransactionCategory"
            ["namespace"]=>
            string(16) "AppBundle\Entity"
            ["rootEntityName"]=>
            string(36) "AppBundle\Entity\TransactionCategory"
            ["customGeneratorDefinition"]=>
            NULL
            ["customRepositoryClassName"]=>
            NULL
            ["isMappedSuperclass"]=>
            bool(false)
            ["parentClasses"]=>
            array(0) {
            }
            ["subClasses"]=>
            array(0) {
            }
            ["namedQueries"]=>
            array(0) {
            }
            ["namedNativeQueries"]=>
            array(0) {
            }
            ["sqlResultSetMappings"]=>
            array(0) {
            }

...

我只粘贴这个对象的部分,因为它非常巨大

2 个答案:

答案 0 :(得分:1)

您的代码似乎没有错。该对象只是Doctrine用于延迟加载真实实体对象的代理对象。

http://doctrine-orm.readthedocs.org/en/latest/reference/advanced-configuration.html#proxy-objects

答案 1 :(得分:0)

尝试使用Doctrine\Common\Util\Debug::dump($defined)而不是var_dump。 Debug::dump()只会获取实体字段,并允许您控制您希望跟踪实体关系的深度(默认为2级)。如果你有任何双向关系,var_dump也会导致致命错误,因为它会在相关实体之间来回传递。