Php Symfony 2 OneToMany
致命错误:调用未定义的方法\ORM\PersistentCollection::getPath() 用户实体: User.phpPhp Symfony 2 OneToMany,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,致命错误:调用未定义的方法\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;
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框架,也许我忘了添加任何东西?您
用户
实体包含化身
对象的集合,而不仅仅是单个对象。例如,您可以迭代化身,并对每个对象调用getPath()
,如下所示:
foreach ($user->getAvatar() as $avatar) {
var_dump($avatar->getPath();
}
顺便说一下,在User
类中的代码中,方法名getAvatar()
是误导性的,因为人们期望用户只有一个化身,而不是化身的集合。我会将它重命名为getAvatars()