我有这个奇怪的问题,一个关联实体是一个代理类,它的方法总是返回null。我希望有人能给我一点启示,因为它快把我逼疯了。
我调用这个代码:
$arrRoleResources = $em->getRepository("AJFITEntityUserRoleResources")->findAll();
foreach($arrRoleResources as $roleResource) {
$name = $roleResource->getRoleFk()->getName();
}
$name将始终为null,即使当我调试代码时,它初始化了代理类,并且$_identifier使用了正确的主键。
UserRoleResources实体:
namespace AJFITEntity;
/**
* UserRoleResources
* * @Table(name="user_role_resources")
* * @Entity(repositoryClass="AJFITRepositoryUserRoleResources")
*/
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 AJFITEntity;
/**
* UserRoles
* * @Table(name="user_roles")
* * @Entity(repositoryClass="AJFITRepositoryUserRoles")
*/
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预编译的例子,如果需要,我可以发布我的配置。
你的一些注释看起来有点错。尝试修复这些…
类注释
去掉多余的星号
/**
* UserRoleResources
*
* @Table(name="user_role_resources")
* @Entity(repositoryClass="AJFITRepositoryUserRoleResources")
*/
class UserRoleResources {
属性注释
将docblock放置在属性的正上方(没有空行)
/**
* @var UserRoles
*
* @ManyToOne(targetEntity="UserRoles")
* @JoinColumn(name="role_fk", referencedColumnName="pk")
*/
private $roleFk;