Zend 3 Doctrine ORM找不到实体

时间:2019-01-10 15:51:55

标签: php doctrine-orm zend-framework3

我最近更新了我的3个实体-我们将其称为EntityA,EntityB和EntityC。现在,我无法从EntityB和EntityC中检索数据或删除记录。我可以插入和更新。 EntityA仍然可以正常工作。

更改如下:

我将一列从int更新为bigint并更改了EntityA上的索引。

我更新了EntityB和EntityC的索引。 EntityC也有一些新列。

EntityB和EntityC都具有链接到EntityA的ID的外键约束。我正在使用manyToOne关系:

/**
 * @var \Application\Entity\User
 *
 * @ORM\ManyToOne(targetEntity="Application\Entity\User")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
 * })
 */
private $user;

我刚刚看到另一个有关验证模式的问题的评论,并且在使用orm:validate-schema之后,我的数据库确实存在同步问题:

[映射]确定-映射文件正确。

[数据库]失败-数据库架构与当前映射文件不同步。

我使用orm:schema-tool:update --force来解决此问题:

[映射]确定-映射文件正确。

[数据库]正常-数据库架构与映射文件同步。

此后,我使用以下命令清除了所有3个缓存:

orm:clear-cache:query    
orm:clear-cache:metadata
orm:clear-cache:result

知道为什么我仍然无法从EntityB和EntityC访问数据吗?

编辑

我是新手,我手动更新了可能引起此问题的数据库和实体。我应该导出数据,删除表,删除实体,重新创建所有实体并将数据导入回来吗?将来应该如何更新数据库和实体?

编辑2

我还应该提到,在进行上面列出的更改之前,一切工作都很好,并且更改不包括外键约束。一切从一开始就存在。再次查看代码,我意识到删除实际上可能有效,但是在尝试检索记录时,代码在到达那里之前失败:

$this->entityManager->getRepository(EntityC::class)->findOneBySomeField($details['someField']);

0 个答案:

没有答案