Php 在Symfony 3中插入链接表不起作用
我有相册实体和图像实体,它们之间有一对一的关系。我创建了一个包含多个图像上传的表单,我设法在表中插入了“Album”和“image”,但没有插入链接表“Album_image”,为什么 这是我在控制器中的代码: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 = 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())