多属性与属性的关系

时间:2012-08-06 10:39:00

标签: orm symfony doctrine-orm

我遇到了symfony 2和关系问题。

我有两张桌子:电影院电影。 我想使用中间对象添加它们之间的关系,中间对象包含有关链接的更多信息(例如电影URL)。

不幸的是,当我尝试保存表单时出现以下错误:

  

通过这种关系找到了一个新的实体         'MyNameSapce\CoreBundle\Entity\Movie#cinemas'    未配置为级联实体的持久操作:   MyNameSapce\CoreBundle\Entity\MovieCinema@0000000059c00fdd00000000cd3391df

     

明确保留新实体或在关系上配置级联持久操作。

     

如果找不到哪个实体导致问题的实施   'MyNameSapce\CoreBundle\Entity\MovieCinema#__toString()'以获得线索。

这是我的代码:
实体:

class MovieCinema {

/**
 * @ORM\Id
 * @ORM\ManyToOne(targetEntity="MyNameSpace\CoreBundle\Entity\Cinema", inversedBy="movies")
 */
private $cinema;

 /**
 * @ORM\Id
 * @ORM\ManyToOne(targetEntity="MyNameSpace\CoreBundle\Entity\Movie", inversedBy="cinemas")
 */
private $movie;

   /**
 * @var string $url
 *
 * @Assert\NotBlank()
 * @ORM\Column(name="url", type="integer")
 */
private $url;

表格:

class MovieCinemaType extends AbstractType {

public function buildForm(FormBuilder $builder, array $options) {
    $builder
            ->add('cinema', 'entity', array(
                'label' => 'movie.field.cinema',
                'class' => 'MyNameSpaceCoreBundle\Entity\Cinema',
                'required' => false
            ))
            ->add('url', 'text', array(
                'label' => 'movie.field.url'
            ))
    ;
}

public function getName() {
    return 'corebundle_moviecinematype';
}


public function getDefaultOptions(array $options) {
    return array(
            'data_class' => 'MyNameSpace\CoreBundle\Entity\MovieCinema'
            );
}

}

class MovieType extends AbstractType {

public function buildForm(FormBuilder $builder, array $options) {
    $builder
            ->add('name', 'text', array(
                'label' => 'movie.field.name'
            ))
            ->add('cinemas', 'collection', array(
                'type' => new MovieCinemaType,
                'prototype' => true,
                'allow_add' => true)
            )
    ;
}

public function getName() {
    return 'corebundle_movietype';
}

}

1 个答案:

答案 0 :(得分:1)

通过执行以下操作检查您的映射:php app/console doctrine:schema:validate

它可以帮助您找到三个班级之间关系中的错误。