Zend 1.11.11 Doctrine 2.1.2初始化关联代理实体

时间:2011-10-18 08:28:00

标签: zend-framework doctrine doctrine-orm

我遇到这个奇怪的问题,关联实体是一个代理类,它的方法总是返回null。我希望有人可以对这个问题有所了解,因为它让我疯了。

我正在调用此代码:

$arrRoleResources = $em->getRepository("AJFIT\Entity\UserRoleResources")->findAll();    

foreach($arrRoleResources as $roleResource) {
       $name = $roleResource->getRoleFk()->getName();   
} 

$ name将始终为null,即使我调试代码时它初始化代理类并且$ _identifier也使用正确的主键。

UserRoleResources实体:

namespace AJFIT\Entity;
/** 
 * UserRoleResources 
 * * @Table(name="user_role_resources") 
 * * @Entity(repositoryClass="AJFIT\Repository\UserRoleResources") 
 */ 
class UserRoleResources {     
   /**    
    * @var UserRoles    
    *    
    * @ManyToOne(targetEntity="UserRoles")    
    * @JoinColumn(name="role_fk", referencedColumnName="pk")    
    *     
    */     

    private $roleFk;
    /**    
     * Get roleFk    
     *    
     * @return UserRoles $roleFk    
     */     

    public function getRoleFk()    {        
         return $this->roleFk;    
    } 
} 

UserRole实体:

namespace AJFIT\Entity;  

/**  
 * UserRoles  
 * * @Table(name="user_roles")  
 * * @Entity(repositoryClass="AJFIT\Repository\UserRoles")  
 */ 
 class UserRoles {     

     /**     
      * @var string $name    
      *
      * @Column(name="name", type="string", length=255)     
      */     

     private $name;      

     /**     
      * @var integer $pk     
      *     
      * @Column(name="pk", type="integer")     
      * @Id     
      * @GeneratedValue(strategy="IDENTITY")     
      */     

      private $pk;      

      /**     
       * Get name     
       *     
       * @return string $name     
       */     

       public function getName()     {         
           return $this->name;     
       } 
 } 

我已经按照zf-boilerplate预编译的示例,如果需要,我可以发布我的配置。

1 个答案:

答案 0 :(得分:1)

你的一些注释看起来有点不对劲。尝试解决这些问题......

类注释

丢掉额外的星号。

/** 
 * UserRoleResources 
 * 
 * @Table(name="user_role_resources") 
 * @Entity(repositoryClass="AJFIT\Repository\UserRoleResources") 
 */ 
class UserRoleResources {

属性注释

将docblock直接放在属性上方(无空行)

/**    
 * @var UserRoles    
 *    
 * @ManyToOne(targetEntity="UserRoles")    
 * @JoinColumn(name="role_fk", referencedColumnName="pk")    
 */     
private $roleFk;