[英]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.