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