Symfony2 / Doctrine不会创建多对多关系

时间:2015-06-26 14:07:41

标签: php mysql symfony doctrine-orm

我正在尝试使用Doctrine和MySQL在Symfony2中建立多对多关系。至于我可以告诉我的注释完全遵循documentation,我之前已成功使用了这个完全相同的语法。

有人看到这有什么问题吗?

的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没有创建关系,教义: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;

1 个答案:

答案 0 :(得分:2)

您的某个注释中存在错误。其中一个必须反过来,就像这样:

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

或者:

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

从一般的角度来看,我建议使用SF工具栏,特别是:enter image description here

单击此图标,它将告诉您实体有哪些问题,并直接指向错误的注释。

希望这有帮助。