Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过多个实体将实体与其自身关联?_Php_Symfony_Doctrine Orm_Doctrine - Fatal编程技术网

Php 如何通过多个实体将实体与其自身关联?

Php 如何通过多个实体将实体与其自身关联?,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我的实体“文档”与不同的实体相关,例如“成员”、“产品”或“项目” 在my mySQL数据库中,这会创建如下表: documents_members documents_products documents_projects 现在,我试着从一个文档到另一个文档,与许多人建立关系。所以我添加了很多文档,我希望我的数据库中有这个表: documents_documents 这是我的方法: 您需要映射关系的双方 每个文档链接到多个其他文档,许多其他文档可能链接到此文档 大概是这样的: /**

我的实体“文档”与不同的实体相关,例如“成员”、“产品”或“项目”

在my mySQL数据库中,这会创建如下表:

documents_members
documents_products 
documents_projects
现在,我试着从一个文档到另一个文档,与许多人建立关系。所以我添加了很多文档,我希望我的数据库中有这个表:

documents_documents
这是我的方法:


您需要映射关系的双方

每个
文档
链接到多个其他文档,许多其他
文档
可能链接到此文档

大概是这样的:

/**
 * Many Documents link to many Documents.
 * @ORM\ManyToMany(targetEntity="App\Entity\Documents", inversedBy="linkedFromDocuments")
 * @ORM\JoinTable(name="document_links",
 *      joinColumns={@ORM\JoinColumn(name="link_origin", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="link_destination", referencedColumnName="id")}
 *      )
 */
private $linkedDocuments;


/**
 * @ORM\ManyToMany(targetEntity="App\Entity\Documents", mappedBy="linkedDocuments")
 */
private $linkedFromDocuments;
这将创建一个名为
document\u links
的表,其中有两列:
link\u origin
link\u destination
。在每一列上都会有一个外键指向
文档


请注意,这种关系是双向的。因此,您可以将
document#1
链接到
document#2
,也可以将
document#2
指向
document#1
(联接表中有两个不同的行)。您的应用程序可能需要对此进行解释。

。这是否只能通过控制台创建?php bin/console make:要创建或更新的实体的实体类名(例如BraveChef):>要停止添加字段的文档):>文档字段类型(输入?查看所有类型)[string]:>关系不知道,但对于更复杂的关系,您最好手工操作。我得到一个错误:
[语义错误]property App\Entity\Documents::$linkedDocuments中的注释“@JoinColumn”从未导入。您是否忘记为该批注添加“use”语句?
我检查过,它看起来正确。但也许我必须替换这些值
documentLinks
link\u origin
link\u destination
?我从您的示例中复制了它,但不知道在我的代码中哪里可以找到替换项
/**
 * Many Documents link to many Documents.
 * @ORM\ManyToMany(targetEntity="App\Entity\Documents", inversedBy="linkedFromDocuments")
 * @ORM\JoinTable(name="document_links",
 *      joinColumns={@ORM\JoinColumn(name="link_origin", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="link_destination", referencedColumnName="id")}
 *      )
 */
private $linkedDocuments;


/**
 * @ORM\ManyToMany(targetEntity="App\Entity\Documents", mappedBy="linkedDocuments")
 */
private $linkedFromDocuments;