簡體   English   中英

我收到通知:未定義索引:joinTable

[英]I am getting Notice: Undefined index: joinTable

我正在使用一些Sonata捆綁包在Symfony 2.8應用程序上構建新功能。

我的Page.orm.xml文件包含以下內容:

    <one-to-many target-entity="AppBundle\Entity\Synonym" field="equivalents" mapped-by="page">
        <cascade>
            <cascade-all/>
        </cascade>
    </one-to-many>

...,而我的Synonym.php實體定義包含以下內容:

/**
 * @var \Application\Sonata\PageBundle\Entity\Page
 * @ORM\ManyToOne(targetEntity="Application\Sonata\PageBundle\Entity\Page", inversedBy="equivalents", cascade={"persist"})
 */
private $page;

...,而我的PageAdmin.php文件包含以下內容:

            ->add('equivalents', 'sonata_type_collection', array(
                'label' => "Equivalents",
                'cascade_validation' => true,
                'required' => false,
            ), array(
                'edit' => 'inline',
                'inline' => 'table',
                'targetEntity' => 'AppBundle\Entity\Synonym',
                'admin_code' => 'app.admin.synonym',
            ))

...並且當我嘗試加載頁面管理屏幕時,出現此錯誤:

注意:未定義的索引:joinTable

所以我的問題是: 為了使Symfony對這種關系感到滿意,我需要添加什么?

編輯#1:不要問為什么我使用“等效項”而不是“同義詞”。 這是一個漫長而奇怪的故事,不值得在這里講到。

編輯#2:關於它的價值,我會認為這不是重復的問題,因為我正在尋找一種在現有供應商庫的上下文中進行開發的方法。 例如,“編輯核心Doctrine功能以避免該索引”將解決鏈接的問題,但並不能解決我的問題,因為我需要在現有系統的約束下進行工作。

你有它... ;)

您應該定義@ORM\\JoinTable

/**
 * @var \Application\Sonata\PageBundle\Entity\Page
 * @ORM\ManyToOne(targetEntity="Application\Sonata\PageBundle\Entity\Page", inversedBy="equivalents", cascade={"persist"})
 * @ORM\JoinTable(name="page_id", referencedColumnName="id")
 */
private $page;

你還有錯誤嗎?

上面來自Preciel的評論包含了針對我的情況的解決方案。

如果他們將其發布為答案,我將很樂意接受該答案。

暫無
暫無

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

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