我需要两个类之间的ManyToMany关系:User和Document。我有以下内容:
班级用户
/**
* @ORM\Id
* @ORM\Column(type="string")
*/
protected $guid;
/**
* @ORM\ManyToMany(targetEntity="project\DocumentationBundle\Entity\Document", mappedBy="users", cascade={"persist", "remove"})
**/
protected $documents;
班级文件
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
protected $id_doc;
/**
* @ORM\ManyToMany(targetEntity="project\UserBundle\Entity\User", inversedBy="documents")
* @ORM\JoinTable(name="document_user")
*/
protected $users;
应用程序应该做的是当用户发布文档时,他可以选择哪些用户可以看到它。这就是我需要这种关系的原因。
当我尝试
时它开火了:php app / console doctrine:schema:update --dump-sql
为来自的关系引用的列名'id' project \ DocumentationBundle \ Entity \ Document朝向 project \ UserBundle \ Entity \ User不存在。
我做错了什么?请帮忙!!
答案 0 :(得分:0)
您的示例在您的实体中使用非标准列名称作为id字段,其名称为" guid"使用字符串类型而不是" id"具有整数类型的名称,但如果必须使用它 - 您可以 - 但您必须在Document实体中正确使用@joinColumns:
/**
* @ManyToMany(targetEntity="project\UserBundle\Entity\User")
* @JoinTable(name="users_documents",
* joinColumns={@JoinColumn(name="user_id", referencedColumnName="guid")},
* inverseJoinColumns={@JoinColumn(name="document_id", referencedColumnName="id_doc")}
* )
**/