現在、次のものが存在します。
リスティングエンティティ
class Listing {
/**
* @var integer $id
*
* @ORM\Column(name="listing_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $title
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @ORM\ManyToOne(targetEntity="IntA\UserBundle\Entity\User", cascade ={"delete"}, inversedBy="listings")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
protected $user;
/**
* @ORM\OneToMany(targetEntity="IntA\UploadBundle\Entity\Gallery", mappedBy="listing_gallery")
*
* @var ArrayCollection $image
*/
private $image;
.
.
.
/**
* @ORM\ManyToMany(targetEntity="IntA\Bundle\Entity\Tag", cascade={"persist"})
* @ORM\JoinTable(name="listing_tag",
* joinColumns={@ORM\JoinColumn(name="listing_id", referencedColumnName="listing_id")},
* inverseJoinColumns={@ORM\JoinColumn(name="tag_id", referencedColumnName="id")}
* )
*
* @var ArrayCollection $tags
*/
protected $tags;
タグエンティティ(存在しますが、この問題に関連しないコード)
ギャラリーエンティティ
class Gallery
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*
* @var integer $gallery_id
*/
protected $gallery_id;
/**
* @ORM\ManyToOne(targetEntity="IntA\Bundle\Entity\Listing", inversedBy="image")
@ORM\JoinColumn(name="listing_id", referencedColumnName="listing_id")
* @var integer
*/
protected $listing_gallery;
/**
* @ORM\Column(type="string", length="255")
*
* @var string $name;
*/
protected $name;
/**
* @ORM\Column(type="string", length="255")
*
* @var string $description;
*/
protected $description;
/**
* @ORM\Column(type="datetime", name="date_created")
*
* @var DateTime $date_created
*/
protected $date_created;
/**
* @ORM\Column(type="datetime", name="date_updated")
*
* @var DateTime $date_updated
*/
protected $date_updated;
/**
* @ORM\Column(type="text", length="255")
*
* @var string $url;
*/
public $url;
public $file = array();
ギャラリーコントローラー
public function uploadAction($id)
{
$file = new Gallery();
$images_form = $this->createForm(new GalleryType(), $file);
$form_view = $images_form->createView();
$form_view->getChild('file')->set('full_name', 'gallery[file][]');
$request = $this->getRequest();
#die(var_dump($request->files));
if ($request->getMethod() === 'POST') {
$images_form->bindRequest($request);
$data = $images_form->getData();
#die(var_dump($images_form->getData()->getFile()));
$em = $this->getDoctrine()->getEntityManager();
$em->persist($file);
$related_listing = $em->getRepository('IntABundle:Listing')->find($id);
$related_listing->setImage($data);
foreach($images_form->getData()->getFile() AS $singleUploadedFile){
$related_listing->setImage($singleUploadedFile);
$em->persist($related_listing);
}
$em->flush();
$uploadedFiles = $em->getRepository('IntABundle:Listing')->findAllImagesPerListing($id);
return $this->render('UploadBundle:Gallery:view_uploaded.html.twig', array(
'uploadedFiles' => $uploadedFiles,
));
}
return $this->render('UploadBundle:Gallery:upload.html.twig', array(
'images_form' => $form_view,
'id' => $id,
));
}
リストの作成(image = ""を使用)は、フォーム上で問題なく機能します。ユーザーが複数の画像を含む「ギャラリー」をアップロードできる別のフォームを作成しました。画像はうまくアップロードされますが、ユーザーが作成した既存のリストオブジェクトと、ユーザーがリストオブジェクトに関連付けたいギャラリーオブジェクト内の画像を接続する方法がわかりません。
問題への私のアプローチが正しいかどうか、またはより良いアプローチが存在するかどうかはわかりません。現在、両方のオブジェクトを作成できますが、それらの間に適切なリンクを作成することはできません。2つの異なるフォーム間でオブジェクトを関連付けるためのサンプルコードはありますか?おそらく私は適切な場所を探していません!