Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 2 OneToMany_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony 2 OneToMany

Php 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;

致命错误:调用未定义的方法\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框架,也许我忘了添加任何东西?

用户
实体包含
化身
对象的集合,而不仅仅是单个对象。例如,您可以迭代化身,并对每个对象调用
getPath()
,如下所示:

foreach ($user->getAvatar() as $avatar) {
    var_dump($avatar->getPath();
}
顺便说一下,在
User
类中的代码中,方法名
getAvatar()
是误导性的,因为人们期望用户只有一个化身,而不是化身的集合。我会将它重命名为
getAvatars()