【发布时间】:2013-06-04 07:54:06
【问题描述】:
我在将 SonataAdminBunle 与 symfony 2.2 结合使用时遇到问题。 我有一个 Project 实体和一个 ProjectImage 实体,并指定了这两者之间的一对多关系,如下所示:
class Project
{
/**
* @ORM\OneToMany(targetEntity="ProjectImage", mappedBy="project", cascade={"all"}, orphanRemoval=true)
*/
private $images;
}
class ProjectImage
{
/**
* @ORM\ManyToOne(targetEntity="Project", inversedBy="images")
* @ORM\JoinColumn(name="project_id", referencedColumnName="id")
*/
private $project;
}
我已经配置了 ProjectAdmin 和 ProjectImageAdmin:
class ProjectAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title')
->add('website')
->add('description', 'textarea')
->add('year')
->add('tags')
->add('images', 'sonata_type_collection', array(
'by_reference' => false
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'id',
))
;
}
}
class ProjectImageAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('file', 'file', array(
'required' => false
))
;
}
}
问题是在数据库的 project_image 表中,project_id 没有保存,而所有其他数据和图像都保存了。在其他任何地方都找不到有效的答案。
【问题讨论】:
-
你试过删除 by_reference 吗?
-
是的,我确实尝试过。很遗憾没有结果。
-
您的项目实体中是否有 setImages、addImage、removeImage 和 getImages 方法?
-
我没有 setImages 方法,这应该是什么样子?
-
知道了,谢谢。这里实际上给出了答案:github.com/sonata-project/SonataAdminBundle/issues/…
标签: symfony sonata-admin