Symfony 2条令2试图调用名为“的未定义方法”;getName";“类的”;条令\ORM\PersistentCollection“;
我正在尝试获取相关对象,如文档symfony 2中所示。它向我显示了一个类似于本文标题的错误。我做错了什么Symfony 2条令2试图调用名为“的未定义方法”;getName";“类的”;条令\ORM\PersistentCollection“;,symfony,doctrine,Symfony,Doctrine,我正在尝试获取相关对象,如文档symfony 2中所示。它向我显示了一个类似于本文标题的错误。我做错了什么 public function indexAction( ) { $UserRepo = $this->getDoctrine()->getRepository('UserUserBundle:User'); $all = $UserRepo->findOneBy(array('username'=>'macq')); $allOwner =
public function indexAction( )
{
$UserRepo = $this->getDoctrine()->getRepository('UserUserBundle:User');
$all = $UserRepo->findOneBy(array('username'=>'macq'));
$allOwner = $all->getOwner()->getName();
return array(
'allOwner'=>$allOwner,
);
}
}
这是可以自我解释的 假设您希望每个用户都有多个所有者,则
user::$owner
类成员确实包含所有者
对象的集合。因此,您不能在该服务器上使用getName()
。如果这确实是您的意图,那么您应该将类命名为memeber$owners
——这将极大地帮助您区分集合和持久对象
我相信你应该有这样的东西:
class User{
// ........
/**
* @ORM\OneToMany(targetEntity ="Property\ManagementBundle\Entity\Owner", mappedBy ="user")
*/
protected $owners;
// .........
}
class Owner {
// ........
/**
* @ORM\ManyToOne(targetEntity ="User\UserBundle\Entity\User", inversedBy ="owners")
* @ORM\JoinColumn(name = "user_id",referencedColumnName ="id")
*/
protected $user;
// .........
}
然后是控制器的代码:
$UserRepo = $this->getDoctrine()->getRepository('UserUserBundle:User');
$all = $UserRepo->findOneBy(array('username'=>'macq'));
$owners = $all->getOwners();
if ( $owners){
$allOwner = $all->getOwners()[0]->getName();
}
这有用吗
我仍然不相信你的逻辑没有颠倒。我的想法是,“所有者
应该包含许多用户
s”,而不是反过来……这是可以自我解释的
假设您希望每个用户都有多个所有者,则user::$owner
类成员确实包含所有者
对象的集合。因此,您不能在该服务器上使用getName()
。如果这确实是您的意图,那么您应该将类命名为memeber$owners
——这将极大地帮助您区分集合和持久对象
我相信你应该有这样的东西:
class User{
// ........
/**
* @ORM\OneToMany(targetEntity ="Property\ManagementBundle\Entity\Owner", mappedBy ="user")
*/
protected $owners;
// .........
}
class Owner {
// ........
/**
* @ORM\ManyToOne(targetEntity ="User\UserBundle\Entity\User", inversedBy ="owners")
* @ORM\JoinColumn(name = "user_id",referencedColumnName ="id")
*/
protected $user;
// .........
}
然后是控制器的代码:
$UserRepo = $this->getDoctrine()->getRepository('UserUserBundle:User');
$all = $UserRepo->findOneBy(array('username'=>'macq'));
$owners = $all->getOwners();
if ( $owners){
$allOwner = $all->getOwners()[0]->getName();
}
这有用吗
我仍然不相信你的逻辑没有颠倒。我的想法是“Owner
应该包含许多User
s”,而不是相反