【问题标题】:Symfony 2 Doctrine 2 Attempted to call an undefined method named "getName" of class "Doctrine\ORM\PersistentCollection"Symfony 2 Doctrine 2 试图调用类“Doctrine\ORM\PersistentCollection”的名为“getName”的未定义方法
【发布时间】:2016-01-03 16:55:40
【问题描述】:

我正在尝试获取相关对象,如文档 symfony 2 中所示。它向我显示了一个错误,如标题 this post。我做错了什么?

public function indexAction( )       


{

$UserRepo = $this->getDoctrine()->getRepository('UserUserBundle:User');
 $all = $UserRepo->findOneBy(array('username'=>'macq'));
 $allOwner = $all->getOwner()->getName();

    return array(
    'allOwner'=>$allOwner,
     );
}

}

/**
 * @ORM\ManyToOne(
 *      targetEntity ="User\UserBundle\Entity\User",
 *      inversedBy ="owner"
 * )
 * @ORM\JoinColumn(
 *      name = "user_id",
 *      referencedColumnName ="id",
 *      
 * )
 */
protected $user;


**
 * @ORM\OneToMany(
 *      targetEntity ="Property\ManagementBundle\Entity\Owner",
 *      mappedBy ="user"
 * )
 */
protected $owner;

【问题讨论】:

    标签: symfony doctrine


    【解决方案1】:

    这是不言自明的。

    假设您希望每个用户拥有多个所有者,您的 User::$owner 类成员确实包含 CollectionOwner 对象。因此,您不能使用getName()。如果这确实是您的意图,您应该将您的班级成员命名为 $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 应该包含许多 Users”,而不是相反...

    【讨论】:

      猜你喜欢
      • 2012-09-23
      • 2022-10-26
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 2014-12-15
      • 1970-01-01
      • 2020-05-19
      相关资源
      最近更新 更多