簡體   English   中英

Symfony 2 OneToMany

[英]Symfony 2 OneToMany

致命錯誤:調用未定義的方法Doctrine \\ ORM \\ PersistentCollection :: getPath()

用戶實體: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框架,也許我忘了添加任何東西?

您的User實體包含一組Avatar對象,而不僅僅是一個對象。 例如,你可以做的是迭代化身並在每個單個對象上調用getPath() ,如下所示:

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

順便說一句, User類中的代碼中的方法名稱getAvatar()具有誤導性,因為人們會期望用戶只有一個頭像而不是一個頭像集合。 我會將它重命名為getAvatars()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM