簡體   English   中英

oneToMany關系實體不保存id字段

[英]oneToMany relation entity does not save id field

我正在嘗試與sonata admin管理oneToMany關系

實際上我想要像sonata media bundle有很多關於gallery > media

HomePage有許多Story ,應該可以排序等。
還有HomePageStory來管理關系,如下所示:
https://github.com/sonata-project/SonataAdminBundle/issues/1231

HomePage.orm.yml

    oneToMany:
        HomePageStorys:
            targetEntity: HomePageStory
            mappedBy: HomePage
            cascade: ["persist", "merge", "remove"]

HomePageAdmin.php

       ->add(
          'HomePageStorys',
          'sonata_type_collection',
          array(
              'cascade_validation' => true,
          ),
          array(
              'edit' => 'inline',
              'inline' => 'table',
              'sortable' => 'position'
          )
      );

HomePageStory.orm.yml

    manyToOne:
        HomePage:
            targetEntity: HomePage
            joinColumn:
                name: homepage_id
                referencedColumnName: id

        Story:
            targetEntity: Story
            joinColumn:
                name: story_id
                referencedColumnName: id

HomePageStoryAdmin

    protected function configureFormFields(FormMapper $formMapper)
    {
        $link_parameters = array();

        if ($this->hasParentFieldDescription()) {
            $link_parameters = $this->getParentFieldDescription()->getOption('link_parameters', array());
        }

        if ($this->hasRequest()) {
            $context = $this->getRequest()->get('context', null);

            if (null !== $context) {
                $link_parameters['context'] = $context;
            }
        }

        $formMapper
          ->add(
              'Story',
              'sonata_type_model_list',
              array('required' => false),
              array(
                  'link_parameters' => $link_parameters
              )
          )
          ->add('position', 'hidden');
    }

到目前為止,這工作正常,因為我可以在HomePage Admin上添加HomePageStories並從內聯列表中選擇一個故事。

它只是將story_id存儲在數據庫中,而homepage_id保持為空 如果我手動設置homepage_id,它會顯示在主頁admin中。

任何線索我需要做什么來保存父實體(HomePage)的ID?

嗯,好像你手動必須在相關的孩子上設置父實體...

雖然不確定它是否真的有必要或“官方方式”,但以下是訣竅:

HomePageAdmin.php

public function prePersist($homepage)
{
    foreach ($homepage->getHomePageStorys() as $homepagestory) {
        $homepagestory->setHomePage($homepage);
    }
}

/**
 * {@inheritdoc}
 */
public function preUpdate($homepage)
{
    foreach ($homepage->getHomePageStorys() as $homepagestory) {
        $homepagestory->setHomePage($homepage);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM