Php 在Symfony 3中插入链接表不起作用

Php 在Symfony 3中插入链接表不起作用,php,symfony,file-upload,Php,Symfony,File Upload,我有相册实体和图像实体,它们之间有一对一的关系。我创建了一个包含多个图像上传的表单,我设法在表中插入了“Album”和“image”,但没有插入链接表“Album_image”,为什么 这是我在控制器中的代码: $album = new Album(); $imagesUploaded = $album->getImagesUploaded(); $imagesStored = []; foreach ($images

我有相册实体和图像实体,它们之间有一对一的关系。我创建了一个包含多个图像上传的表单,我设法在表中插入了“Album”和“image”,但没有插入链接表“Album_image”,为什么

这是我在控制器中的代码:

            $album = new Album();
        $imagesUploaded = $album->getImagesUploaded();
        $imagesStored = [];
        foreach ($imagesUploaded as $image) {

            $fileName = md5(uniqid('img_album_', true));
            $fileExtension = $image->guessExtension();
            $nomImageComplet = $fileName . '.' . $fileExtension;

            $image->move(
                $this->getParameter('albums_images_directory'),
                $nomImageComplet
            );

            $tinified = fromFile($this->getParameter('albums_images_directory') . '/' . $nomImageComplet);
            $tinified->toFile($this->getParameter('albums_images_directory') . '/' . $nomImageComplet);

            $img = new Image();
            $img->setExtension($fileExtension);
            $img->setFile($fileName);

            $em->persist($img);

            $imagesStored[] = $img;
        }

        $album->setImages($imagesStored);

        $em->persist($album);
        $em->flush();
Album.php:

 /**
 * @ORM\OneToMany(targetEntity="Image", mappedBy="album")
 *
 */
private $images;

/**
 * @Assert\NotBlank()
 * @var
 */
private $imagesUploaded;
Image.php:

/**
 * @ORM\ManyToOne(targetEntity="Album", inversedBy="images")
 */
private $album;

提前感谢您的帮助

您需要在“一侧”添加到构造函数中

$this->images=newarraycollection()

图像实体:

 /**
 * @ORM\OneToMany(targetEntity="Image", mappedBy="album")
 */
private $images;

/**
 * @Assert\NotBlank()
 * @var
 */
private $imagesUploaded;

public function __construct()
{
    $this->images = new ArrayCollection();
}
对于“多”端,添加注释

  • @ORM\JoinColumn(nullable=false)
相册实体:

 /**
 * @ORM\ManyToOne(targetEntity="Album", inversedBy="images")
 * @ORM\JoinColumn(nullable=false)
 */
private $album;
要从相册表单上载图像,只需将关系添加到相册类型:

        ->add('imagesUploaded', FileType::class, [
            'label'   => 'Upload images'
        ])

它几乎可以工作,我没有在相册中插入任何数据。\u id:/也许你需要更改一些逻辑,检查关系。你的逻辑必须是:$imagesUploaded之后-对象需要保存到$images。看这个例子,在本例中,使用了事件侦听器。(@ORM\PreFlush())