2016-01-20 48 views
1

致命錯誤:調用未定義方法學說\ ORM \ PersistentCollection ::的getPath()Symfony的2一對多

用戶實體: user.php的

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; 
use Symfony\Component\Security\Core\User\UserInterface; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
    * @ORM\Entity 
    * @ORM\Table(name="users") 
    */ 
class User implements UserInterface, \Serializable 
{ 

/** 
* @ORM\OneToMany(targetEntity="Avatars", mappedBy="user") 
*/ 
protected $avatars; 

/** 
* @return mixed 
*/ 
public function getAvatar() 
{ 
    return $this->avatars; 
} 


public function __construct() 
{ 
    $this->avatars = new ArrayCollection(); 
} 

/** 
* Get avatars 
* 
* @return \Doctrine\Common\Collections\Collection 
*/ 
public function getAvatars() 
{ 
    return $this->avatars; 
} 

和頭像實體: Avatar.php

namespace AppBundle\Entity; 

    use Doctrine\ORM\Mapping as ORM; 
    use Symfony\Component\Validator\Constraints as Assert; 
    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; 

    /** 
     * @ORM\Entity 
     * @ORM\Table(name="avatars") 
     */ 
    class Avatars 
    { 
/** 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="avatars") 
* @ORM\JoinColumn(name="user", referencedColumnName="id") 
*/ 
private $user; 


/** 
* @ORM\Column(type="string", length=54) 
*/ 
private $path; 

/** 
* @return mixed 
*/ 
public function getPath() 
{ 
    return $this->path; 
} 

無法從控制器到阿凡達實體:

HomeController.php

public function homeAction() 
    { 
     $usr= $this->get('security.token_storage')->getToken()->getUser(); 
     var_dump($user->getAvatar()->getPath());exit; 
    } 

我在哪裏弄錯了?我只開始學習symfony框架,也許我忘了添加任何東西?

回答

3

User實體包含一個Avatar對象的集合,而不僅僅是一個對象。你可以做什麼,例如,是迭代的頭像和每個單個對象這樣的呼籲getPath()

foreach ($user->getAvatar() as $avatar) { 
    var_dump($avatar->getPath(); 
} 

順便說一句,在User類代碼的方法名稱getAvatar()是誤導,因爲一次會期望用戶只有一個頭像而不是一組頭像。我會將它重命名爲getAvatars()

+0

你說的對,謝謝 – Asmoria