繁体   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