我在Page,PageMedia和Sonata Media Bundles Media类之间有一对多的关系。 我将插入到PageMedia和Page中,但由于某种原因,页面媒体表中的页面ID始终为空。
以下是我正在尝试使用的对象的相关部分。
class Page {
/** @ORM\OneToMany(targetEntity="PageMedia", mappedBy="page", cascade={"persist"} */
protected $pageMedias;
}
class PageMedia {
/** @ORM\ManyToOne(targetEntity="Page", cascade={"all"}, inversedBy="pageMedias") ) */
protected $page;
/** @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"}) */
protected $media;
}
class PageAdmin extends Admin {
protected function configureFormFields(FormMapper $form) {
$form
->with('Media')
->add('pageMedias', 'sonata_type_collection',
array('by_reference' => false ), array(
'edit'=>'inline',
'inline' => 'table',
'sortable' => 'sortOrder'
))
->end();
}
}
class PageMediaAdmin extends Admin {
protected function configureFormFields(FormMapper $form) {
$form->add('media', 'sonata_type_model_list',
array(),
array('link_parameters'=>array('context' =>'default')));
}
}
也许有人可以帮我解决问题?我在这里完全失去了...即使在页面和页面媒体之间添加一个可以为空的可加入的文件,我也无法插入,我错过了什么?
再次感谢。
答案 0 :(得分:1)
在你的Page类中,你应该有一个“addPageMedia”方法......就像这样:
$this->pageMedias[] = $pageMedia;
你必须在
之前加上这个$pageMedia->setPage($this)
或类似的东西! :)