symfony 2 と関係で問題が発生しました。
Cinemaとfilmの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';
}
}