我正在尝试使用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;
答案 0 :(得分:2)
您的某个注释中存在错误。其中一个必须反过来,就像这样:
@ORM\ManyToMany(targetEntity="Feed", inversedBy="links")
或者:
@ORM\ManyToMany(targetEntity="Link", mappedBy="feeds")
从一般的角度来看,我建议使用SF工具栏,特别是:
单击此图标,它将告诉您实体有哪些问题,并直接指向错误的注释。
希望这有帮助。