我该怎么办?教义关系

寡头

我想使用以下字段创建动态表单照片:

  • 标题
  • 专辑

相册是一个复选框字段(带有'multiple'attr)。

照片与相册具有多对一关系。

我想做的是将具有不同相册值的照片保存几遍,而不是将一张相册的arrayCollection保留在一张照片中。

我试着做

如果($ request-> getMethod()=='POST'){

    $form->bind($request);

        if ($form->isValid()) { 
                $data = $form->getData();
                $listeAlbum = $data['album'];

                foreach ($listeAlbum as $album) {
     
                  $em->persist($photo);
                  $em->flush();
                }

我收到错误信息(在bind->($ request)行)

  Catchable Fatal Error: Argument 1 passed to MySite\TestBundle\Entity
    \Photo::setAlbum() must be an instance of MySite\TestBundle\Entity\Album,
    instance of Doctrine\Common\Collections\ArrayCollection given, ...

有没有办法做到这一点?


编辑:更多代码。

我的表格类型

类PhotoType扩展AbstractType {

private $securityContext;

public function __construct(SecurityContext $securityContext)
{
    $this->securityContext = $securityContext;
}

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('file', 'file')       //  , array("attr" => array("multiple" => "multiple",  ))
            ->add('titre');
            
    $user = $this->securityContext->getToken()->getUser();
    if (!$user) {
        throw new \LogicException(
            'The FriendMessageFormType cannot be used without an authenticated user!'
        );
    }

    $builder->addEventListener(
        FormEvents::PRE_SET_DATA,
        function (FormEvent $event) use ($user) {
            $form = $event->getForm();

            $formOptions = array(
                'multiple' => true, //several choices
                'expanded' => true, // activate checkbox instead of list
                'class' => 'EVeilleur\DefuntBundle\Entity\Album',
                'property' => 'titre',
                'query_builder' => function (EntityRepository $er) use ($user) {
                    // build a custom query
                    return $er->createQueryBuilder('u')->add('select', 'u')
                                                       ->add('from', 'EVeilleurDefuntBundle:Album u');
                                                     //  ->add('where', 'u.id = ?1')
                                                     //  ->add('orderBy', 'u.name ASC');

                },
            );

            // create the field, = $builder->add()
            // field name, field type, data, options
            $form->add('album', 'entity', $formOptions);
        }
    );


}

/**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'EVeilleur\DefuntBundle\Entity\Photo'
    ));
}

/**
 * @return string
 */
public function getName()
{
    return 'eveilleur_defuntbundle_photo';
} }

实体关系,在Photo.php中

/**
 * @ORM\ManyToOne(targetEntity="EVeilleur\DefuntBundle\Entity\Album")
 * @ORM\JoinColumn(nullable=true)
*/
private $album;
脾气暴躁的

我认为问题在于您将“相册”作为单个实体字段添加到“照片”表单中,但是您的选择意味着它将被转换为一组复选框,这些复选框在逻辑上由Symfony启用了提交到ArrayList。您的照片实体只需要一个相册。

您能否张贴其余的Photo实体,特别是setAlbum方法(如果在这种情况下您实际上不需要创建一个,很抱歉,即使它们很琐碎,我也总是创建我的照片!)?

如果“照片”是具有相册的“ ManyToOne”,则一个相册中可以包含许多照片,并且“相册”字段应该是一个下拉列表-您不能选择多个相册。这可能是问题的根源。

如果一个相册中可以包含许多照片,而每张照片中也可以包含多个照片,那么您确实有一个ManyToMany关系,在这里似乎并不是这样建模的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我该怎么办呢?该怎么办?

来自分类Dev

Raspberry Pi我该怎么办?

来自分类Dev

意外升级,我该怎么办?

来自分类Dev

日期计数,我该怎么办?

来自分类Dev

我的属性太不讲究了,我该怎么办?

来自分类Dev

我想运行“ HttpAsyncTask” ...我该怎么办?

来自分类Dev

我单击了病毒链接-我该怎么办?

来自分类Dev

该消息怎么办?

来自分类Dev

psn参数由MacOSX启动。我该怎么办?

来自分类常见问题

如果我的发行证书过期,该怎么办?

来自分类Dev

Medibuntu项目已经结束-现在我该怎么办?

来自分类Dev

HUP何时停止发送,我该怎么办?

来自分类Dev

如果我有几个重叠的QTimer,该怎么办

来自分类Dev

我打断了python:该怎么办?

来自分类Dev

删除实体时我该怎么办?MySQLIntegrityConstraintViolationException

来自分类Dev

位置0没有行...。我该怎么办..?

来自分类Dev

对于频繁重复的常数我该怎么办?

来自分类Dev

为了创建多个敌人实例,我该怎么办?

来自分类Dev

我的PC不支持ACPI,该怎么办?

来自分类Dev

用cont无法完成的callCC我该怎么办?

来自分类Dev

我需要更新数据库该怎么办?

来自分类Dev

使用xpath抓取时,我该怎么办?

来自分类Dev

如果遇到electron-dl,我该怎么办?

来自分类Dev

爬行“用户警告”我该怎么办?

来自分类Dev

npm错误:cb()从未调用,我该怎么办?

来自分类Dev

为了创建多个敌人实例,我该怎么办?

来自分类Dev

Medibuntu项目已经结束-现在我该怎么办?

来自分类Dev

我该怎么办[共享首选项]

来自分类Dev

我的PC不支持ACPI,该怎么办?