私はスタックオーバーフローが初めてで、あなたが私を助けてくれることを願っています.
私は symfony2 で OneupUploaderBundle を使用していますが、複数の画像をアップロードしてデータベースに保持することができます。
しかし、今では、たとえば 1 つの「アナウンス」に対して複数の画像をアップロードしたいので、2 つのエンティティがあります。
アナウンス
namespace TestBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Annonce
*
* @ORM\Table(name="annonce")
* @ORM\Entity(repositoryClass="TestBundle\Repository\AnnonceRepository")
*/
class Annonce
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="titre", type="string", length=255)
*/
private $titre;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set titre
*
* @param string $titre
* @return Annonce
*/
public function setTitre($titre)
{
$this->titre = $titre;
return $this;
}
/**
* Get titre
*
* @return string
*/
public function getTitre()
{
return $this->titre;
}
}
そして私のエンティティ画像
namespace TestBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Image
*
* @ORM\Table(name="image")
* @ORM\Entity(repositoryClass="TestBundle\Repository\ImageRepository")
*/
class Image
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Image
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @ORM\ManyToOne(targetEntity="TestBundle\Entity\Annonce")
* @ORM\JoinColumn(nullable=false)
*/
private $annonce;
/**
* Set annonce
*
* @param \TestBundle\Entity\Annonce $annonce
* @return Image
*/
public function setAnnonce(\TestBundle\Entity\Annonce $annonce)
{
$this->annonce = $annonce;
return $this;
}
/**
* Get annonce
*
* @return \TestBundle\Entity\Annonce
*/
public function getAnnonce()
{
return $this->annonce;
}
}
私のイベントリスナー
namespace TestBundle\EventListener;
use Doctrine\Common\Persistence\ObjectManager;
use Oneup\UploaderBundle\Event\PostPersistEvent;
use TestBundle\Entity\Annonce;
use TestBundle\Entity\Image;
class UploadListener
{
/**
* @var ObjectManager
*/
private $em;
public function __construct(ObjectManager $em)
{
$this->em = $em;
}
public function onUpload(PostPersistEvent $event)
{
$file = $event->getFile();
$annonce = new Annonce();
$image = new Image();
/* TEST */
$annonce->setTitre("I'am a title");
$this->em->persist($annonce);
$image->setName($file->getFilename());
$image->setAnnonce($annonce);
$this->em->persist($image);
$this->em->flush();
$response = $event->getResponse();
$response['files'] = [
'name' => $file->getFilename(),
'size' => $file->getSize()
];
}
問題は、多くの画像をアップロードすると、Annonce と Image の行数が同じになることです。
誰かが私を助けてください:)