0

我有两个实体:剧集和版本。当我试图删除一个版本时,得到一个异常:

注意:未定义索引:/var/www/Mendrock/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php 第 1561 行中的插曲

我已经检查了关系,但我没有发现错误。

我的实体: 剧集

namespace Mendrock\Bundle\SagaBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Mendrock\Bundle\SagaBundle\Entity\Episode
 *
 * @ORM\Table(name="episode")
 * @ORM\Entity(repositoryClass="Mendrock\Bundle\SagaBundle\Repository\EpisodeRepository")
 */
class Episode {

    ...

    /**
     * 
     * @ORM\OneToMany(targetEntity="Version", mappedBy="episode", cascade={"remove", "persist"})
     */
    private $versions;

版本

namespace Mendrock\Bundle\SagaBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * Mendrock\Bundle\SagaBundle\Entity\EpisodeVersion
 *
 * @ORM\Table(name="version")
 * @ORM\Entity(repositoryClass="Mendrock\Bundle\SagaBundle\Repository\EpisodeVersionRepository")
 */
class Version {

    ...

    /**
     * @ORM\ManyToOne(targetEntity="Episode", inversedBy="versions", cascade={"persist"})
     * @ORM\JoinColumn(name="episode_id", referencedColumnName="id")
     */
    private $episode;

    ...

控制器

    /**
    *
    * @Route("/versionConfirmeDelete/{id}", options={"expose"=true})
    * @Method("GET")
    * @Template()
    */
    public function versionConfirmeDeleteAction($id) {
        $em = $this->getDoctrine()->getManager();

        $entity = $em->getRepository('MendrockSagaBundle:Version')->find($id);

        if (!$entity) {
            throw $this->createNotFoundException('Unable to find Version entity.');
        }

        $deleteForm = $this->createDeleteForm($id);

        return array(
            'entity' => $entity,
            'delete_form' => $deleteForm->createView(),
        );
    }

    /**
    * Deletes a Episode entity.
    *
    * @Route("/versionDelete/{id}")
    * @Method("POST")
    */
    public function versionDeleteAction(Request $request, $id) {
        $form = $this->createDeleteForm($id);
        $form->bind($request);

        if ($form->isValid()) {
            $em = $this->getDoctrine()->getManager();
            $entity = $em->getRepository('MendrockSagaBundle:Version')->find($id);
            $episode = $entity->getEpisode();
            if (!$entity) {
                throw $this->createNotFoundException('Unable to find Version entity.');
            }

            $em->remove($entity);
            $em->flush();
            $this->get('session')->setFlash('success', 'La version "' . $entity . '" de l\'épisode "'.$episode.'" à été supprimé !');
        } else {

            $this->get('session')->setFlash('error', 'Impossible de supprimer la version "' . $entity . '".');
        }

        return $this->redirect($this->generateUrl('mendrock_saga_default_episodes'));
    }
    #################################################################
    ### Commun     ##################################################
    #################################################################

    private function createDeleteForm($id) {
        return $this->createFormBuilder(array('id' => $id))
                        ->add('id', 'hidden')
                        ->getForm()
        ;
    }

对我的问题有任何想法吗?

4

1 回答 1

0

我发现了错误,这是该实体出现问题的另一个关系。属性名称不对应。

于 2012-08-18T17:51:11.730 回答