【问题标题】:Form with one to many relation具有一对多关系的表格
【发布时间】:2017-10-10 16:48:19
【问题描述】:

在我的数据库中,我有 2 个表:

课程表:

  • id (PK)
  • 名称(varchar)
  • 说明(文字)

会话表:

  • id (PK)
  • 日期(日期时间)
  • course_id(FK 到课程表中的 id)

我的 SessionType 中的 buildForm 函数如下所示:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('date');
}

我的 CourseType 中的 buildForm 函数如下所示:

$builder
    ->add('name')
    ->add('description')
    ->add('foreknowledge')
    ->add('teacher')
    ->add('sessions', CollectionType::class, array(
        'entry_type' => SessionType::class,
        'entry_options' => array('label' => false),
        'allow_add' => true,
        'by_reference' => false,
        'allow_delete' => true,
    ))

我的树枝模板中的表单如下所示:

{{ form_start(form) }}
    {{ form_widget(form) }}

    <input type="submit" value="Create" />
{{ form_end(form) }}

但“会话”下没有显示任何内容。我希望有可能在我的课程下创建多个会话。有没有简单的方法可以做到这一点?

更新:

当我尝试保存我的课程并在保存之前进行转储时,我得到了这个:

我的课程已保存,但未链接到课程。这是怎么来的?

【问题讨论】:

  • 我猜你的意思是“ManyToMany”关系,因为在这种情况下“OneToMany”不是逻辑(你的数据库设计):每个会话可以有很多课程,每个课程可以存在很多会话

标签: php mysql sql symfony foreign-keys


【解决方案1】:

这是可能的,但您缺少一些 javascript,这是有据可查的 here

您可以阅读该文档页面并询问是否需要任何帮助,而不是从此处复制粘贴。

【讨论】:

  • @nielsv 在你的课程实体中你有 addSession 方法吗?你转发会话变量?在那个方法中做$session-&gt;setCourse($this) 应该可以解决它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 2015-07-15
相关资源
最近更新 更多