Symfony嵌入了ManyToOne关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony嵌入了ManyToOne关系相关的知识,希望对你有一定的参考价值。

我正在尝试改进个人应用程序,但我遇到了嵌入式表单的问题。事实上,我有一个advertType表单,我想在其中添加一个字段,以便选择附加到广告的技能和级别。

通过这种方式,我有一个广告实体,一个技能实体,一个adsSkill实体,由于OneToMany关系,它引用了广告和技能实体。 level属性来自advertSkill实体。

我不知道如何继续在我的广告表单中添加技能字段,以便广告将与相应的技能和级别一起正确存储。

我的广告实体中没有引用技能的属性。

下面是我的advertType类的示例:

$builder
        ->add('date',       DateTimeType::class, array(
            'view_timezone' => 'Europe/Paris',  
            'with_seconds' => true              
        ))
        ->add('title',      TextType::class)
        ->add('content',    TextareaType::class)
        ->add('author',     TextType::class)
        ->add('email',      TextType::class)
        ->add('image',      ImageType::class)
        ->add('categories', EntityType::class, array(
            'class'             =>  'OCPlatformBundle:Category',
            'choice_label'      =>  'name',
            'multiple'          =>  true
        ))
        ->add('save',       SubmitType::class);

感谢您的帮助,我可以提供有关我的代码的更多详细信息,但是当我将一些代码添加到代码中时,它会很难看。

答案

我试着在法语论坛上继续阅读与我相同问题的一些建议,但我还有一个错误,因为我没有显示我的技能名称和我的关卡名称。

我的AdvertType表单类:

enter code here         $builder
        ->add('date',       DateTimeType::class, array(
            'view_timezone' => 'Europe/Paris',  // On affiche l'horaire avec le fuseau horaire de Paris
            'with_seconds' => true              // On ajoute les secondes àl'affichage de l'horaire
        ))
        ->add('title',      TextType::class)
        ->add('content',    TextareaType::class)
        ->add('author',     TextType::class)
        ->add('email',      TextType::class)
        ->add('image',      ImageType::class)
        ->add('categories', EntityType::class, array(
            'class'             =>  'OCPlatformBundle:Category',
            'choice_label'      =>  'name',
            'multiple'          =>  true
        ))
        ->add('advertSkill', CollectionType::class, array(
            'entry_type'        => AdvertSkillType::class
        ))
        ->add('save',       SubmitType::class);

我的新AdvertType表单类:

enter code here     public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('advertSkill', EntityType::class, array(
            'class'                  =>  'OCPlatformBundle:Skill',
            'choice_label'           =>  'name'
        ))
        ->add('level', EntityType::class, array(
            'class'             =>  'OCPlatformBundle:AdvertSkill',
            'choices'           =>  array('Débutant', 'Intermédiaire', 'Expert')
        ));
}

此外,我在advertSkill类引用的两个类中添加了OneToMany属性“advertSkill”。

我不明白如何使它有效!

以上是关于Symfony嵌入了ManyToOne关系的主要内容,如果未能解决你的问题,请参考以下文章

Symfony ManyToOne 关系更改类型

Symfony 5 easyadmin 3 与 ManyToOne 关系的实体 - 不保存在“多”端

Doctrine symfony使用OneToMany删除实体 - ManyToOne关系

Doctrine ManyToOne 关系 - 在“设置”时自动删除

Symfony 2 多对一

使用相关/嵌入式实体