【问题标题】:Symfony 3.2: OneToMany collection not initializedSymfony 3.2:OneToMany 集合未初始化
【发布时间】:2017-02-01 16:09:36
【问题描述】:

实体/用户.php:

    // ...
    use Doctrine\Common\Collections\ArrayCollection;
    // ...

    /**
     * @var ArrayCollection
     *
     * @ORM\OneToMany(targetEntity="Picture", mappedBy="user")
     * @ORM\OrderBy({"file" = "ASC"})
     **/
    private $pictures;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->pictures = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
     * Add picture
     *
     * @param \MyBundle\Entity\Picture $picture
     *
     * @return User
     */
    public function addPicture(\MyBundle\Entity\Picture $picture)
    {
        $this->pictures[] = $picture;

        return $this;
    }

    /**
     * Remove picture
     *
     * @param \MyBundle\Entity\Picture $picture
     */
    public function removePicture(\MyBundle\Entity\Picture $picture)
    {
        $this->pictures->removeElement($picture);
    }

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

   // ...

实体/图片.php

// ...

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

/**
 * Set user
 *
 * @param \MyBundle\Entity\User $user
 *
 * @return Picture
 */
public function setUser(\MyBundle\Entity\User $user = null)
{
    $this->user = $user;

    return $this;
}

/**
 * Get user
 *
 * @return \MyBundle\Entity\User
 */
public function getUser()
{
    return $this->user;
}

// ...

控制器/PictureController.php:

// ...

public function indexAction(Request $request)
    {
        return array(
            'pictures' => $this->getUser()->getPictures(),
        );
    }

// ...

当我转储 ->getPictures() 的结果时,这是 Symfony 的分析器输出的内容:

PersistentCollection {#292 ▼
  -snapshot: []
  -owner: User {#270 ▶}
  -association: array:16 [ …16]
  -em: EntityManager {#53 …11}
  -backRefFieldName: "user"
  -typeClass: ClassMetadata {#272 …}
  -isDirty: false
  #collection: ArrayCollection {#293 ▶}
  #initialized: false
}

不知何故,集合没有初始化,它没有项目,虽然数据库中有一些......我在这里错过了什么?

【问题讨论】:

  • This 为我解决了这个问题。

标签: php doctrine-orm symfony


【解决方案1】:

将此添加到您的学说注释中,使其延迟加载相关实体;

@ORM\OneToMany(targetEntity="Picture", mappedBy="user",fetch="EAGER")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多