[英]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.