1

私はスタックオーバーフローが初めてで、あなたが私を助けてくれることを願っています.

私は 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 の行数が同じになることです。

誰かが私を助けてください:)

4

0 に答える 0