2

我在 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')));
    }
}

也许有人可以帮我解决问题?我在这里完全不知所措......即使在页面和页面媒体之间的 joinColumn 添加了一个可为空的 fale 之后,我现在也无法插入,我错过了什么?

再次感谢。

4

1 回答 1

1

在您的 Page 类中,您应该有一个“addPageMedia”方法......像这样:

$this->pageMedias[] = $pageMedia;

你必须先添加这个

$pageMedia->setPage($this)

或类似的东西!:)

于 2014-01-31T20:31:41.663 回答