可捕获的致命错误:类DoctrineORMModule \ Proxy \ __ CG_的对象

时间:2015-04-18 23:57:42

标签: php doctrine-orm zend-framework2

我尝试从查询中获得结果

$user = $this->getEntityManager()
                     ->getRepository('\ApanelUsers\Entity\Usercommon')
                     ->findAll();

但如果我尝试添加到查询连接列,我有一个错误,没有它我有很好的结果。 这是我需要的JoinColumt:

/**
 * @var \ApanelUsers\Entity\Userstatus
 *
 * @ORM\ManyToOne(targetEntity="ApanelUsers\Entity\Userstatus")
 * @ORM\JoinColumn(name="User_StatusId", referencedColumnName="UserStatusId", nullable=false)
 */
private $userStatusid;

/**
 * Set userStatusid
 *
 * @param \ApanelUsers\Entity\Userstatus $userStatusid
 * @return Usercommon
 */
public function setUserStatusid(\ApanelUsers\Entity\Userstatus $userStatusid = null)
{
    $this->userStatusid = $userStatusid;

    return $this;
}

/**
 * Get userStatusid
 *
 * @return \ApanelUsers\Entity\Userstatus 
 */
public function getUserStatusid()
{
    return $this->userStatusid;
}

这是一个视图

<?= $user->getUserStatusid(); ?>

但我有错误

  

捕获致命错误:类/ DoctrineORMModule \ Proxy__CG __ \ ApanelUsers \ Entity \ Userstatus类的对象无法转换为/home/xtadmin/localhost/panorama-hotel.local/www/module/ApanelUsers/view/apanel-users中的字符串第27行/index/index.phtml

1 个答案:

答案 0 :(得分:1)

错误很明显,你不能回显你必须调用其方法之一的整个关联实体,当你调用$user->getUserStatusid()时,这意味着它将返回ApanelUsers\Entity\Userstatus实体的整个对象,这样你就可以' t使用<?= entity ?>

立即回显整个实体

您可以在__toString()实体

中实施ApanelUsers\Entity\Userstatus方法
class Userstatus{

     public fundtion __toString(){
     return $this->getTitle() // or you can use any other method to retrurn value
     }
// other properties with their related getters and setters
}

另一种方式是

<?= $user->getUserStatusid()->getTitle(); ?>

但这也会失败,因为在setUserStatusid()你允许状态可以为null所以对于第二个选项,你需要首先检查它的ApanelUsers\Entity\Userstatus实例是否然后调用它的相关getter

<?php

    $status = $user->getUserStatusid();
    if($status instanceof \ApanelUsers\Entity\Userstatus){
    echo $status->getTitle();
    }

?>