0

我正在使用奏鸣曲管理包,并希望针对一个实体保存多条记录。例如; 我的实体中有三个字段(id、project、issues)。假设一个项目有很多问题,我对问题字段使用多项选择,问题与问题实体具有多对一关系,项目与项目实体具有多对一关系,我希望保存后的 prject_issues 表是这样的,

id | project| issues
--------------------
 1 |    2   |   23
 2 |    2   |   78
 3 |    2   |   45
 4 |    2   |   64

我对奏鸣曲管理员和 symfony2 很陌生,我怎么能做到这一点?

4

2 回答 2

2

创建三个实体ProjectIssueProjectIssue。为每个实体创建三个管理类。在 中创建 Doctrine@ORM\OneToMany(targetEntity="ProjectIssue", mappedBy="project", cascade={"persist"}, orphanRemoval=true)关系Project。从to和 to创建两个ManyToOne关系。使用命令为一对多关系生成正确的 setter 和 getter。记得添加方法。最后,做in和in 。ProjectIssueProjectIssueapp/console doctrine:generate:entities$projectIssues->setProject($this);Project::addProjectIssue($projectIssues)->add('issues', 'sonata_type_collection', array('by_reference' => null), array('edit' => 'inline','inline' => 'table'))ProjectAdmin->add('issue')ProjectIssueAdmin

这将使您接近解决方案。__toString()请记住在您的实体中定义方法。

于 2013-08-21T13:19:18.157 回答
1

您必须创建(至少)两个实体,让它们命名,并且Project应该设置为与 OneToMany 具有关系。 完成后,您应该为这两个实体创建管理类并根据 SonataAdmin 文档进行设置。如果您只希望其中一个可以直接访问,您可以在服务定义中添加参数集。 接下来,您将希望将其添加到您的IssueProjectIssue
show_in_dashboardfalse
ProjectAdmin

protected function configureFormFields(FormMapper $formMapper)
{
   $formMapper
       ->add('issues', 'sonata_type_collection', ['by_reference' => null], 
               ['edit' => 'inline','inline' => 'table']
       )
}

您应该能够在文档中找到by_refference像这样设置的原因和其他参数。 如果上面的代码段不起作用,请尝试在最后一个参数中添加指向服务。SonataAdmin
admin_codeIssueAdmin

于 2013-08-21T07:13:37.287 回答