簡體   English   中英

Symfony2 / Doctrine不會建立多對多關系

[英]Symfony2/Doctrine won't create many-to-many relationship

我試圖在Symfony2中使用Doctrine和MySQL建立多對多關系。 據我所知,注解完全遵循文檔 ,而且我之前已經成功使用了完全相同的語法。

有人看到這有什么問題嗎?

的Myvendor / MyBundle /實體/ Feed.php:

namespace MyVendor\MyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use MyVendor\MyBundle\Entity\Link;
/**
 * Feed
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Feed
{
    // ...
    /**
     * @ORM\ManyToMany(targetEntity="Link", mappedBy="feeds")
     * @ORM\JoinTable(name="feeds_links")
     */
    protected $links;
    // ...

的Myvendor / MyBundle /實體/ Link.php:

namespace MyVendor\MyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use MyVendor\MyBundle\Entity\Feed;
/**
 * Link
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Link
{
    // ...
    /**
     * @ORM\ManyToMany(targetEntity="Feed", mappedBy="links")
     */
    protected $feeds;
    // ...

但是,Doctrine不會創建關系,doctrine:schema:update僅生成以下關系:

CREATE TABLE link (
    id INT AUTO_INCREMENT NOT NULL,
    -- ...
    PRIMARY KEY(id)
) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
CREATE TABLE feed (
    id INT AUTO_INCREMENT NOT NULL,
    -- ...
    PRIMARY KEY(id)
) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;

您的注解之一有誤。 其中之一必須是“ inversedBy”,如下所示:

@ORM\ManyToMany(targetEntity="Feed", inversedBy="links")

要么 :

@ORM\ManyToMany(targetEntity="Link", mappedBy="feeds")

從一般的角度來看,我建議使用SF工具欄,尤其是這樣: 在此處輸入圖片說明

單擊此圖標,它將告訴您您的實體有什么問題,並將您直接指向出現問題的注釋。

希望這可以幫助。

暫無
暫無

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

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