不能删除实体


Can't delete entity

我有一个名为parameters的表。

idproject_idphase_idcompany_id等字段。

这里有两行

+----+------------+----------+------------+
| id | project_id | phase_id | company_id |
+----+------------+----------+------------+
|  1 |         10 |     NULL |       NULL |
|  2 |         10 |        2 |       NULL |
+----+------------+----------+------------+

我想删除一行

try {
    $parameter = $em->find("Parameters", 1);
    $em->remove($parameter);
    $em->flush();
} catch (Exception $e) {
    displayTree($e->getMessage());
    displayTree($e->getTraceAsString());
    exit();
}

但是我面对错误信息:

Entity was not found.
#0 /home/www/html/.tmp/__CG__Phase.php(108): Doctrine'ORM'Proxy'ProxyFactory->Doctrine'ORM'Proxy'{closure}(Object(DoctrineProxies'__CG__'Phase), '__load', Array)
#1 /home/www/html/.tmp/__CG__Phase.php(108): Closure->__invoke(Object(DoctrineProxies'__CG__'Phase), '__load', Array)
#2 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(2254): DoctrineProxies'__CG__'Phase->__load()
#3 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1688): Doctrine'ORM'UnitOfWork->cascadeRemove(Object(DoctrineProxies'__CG__'Phase), Array)
#4 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(2278): Doctrine'ORM'UnitOfWork->doRemove(Object(DoctrineProxies'__CG__'Phase), Array)
#5 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1688): Doctrine'ORM'UnitOfWork->cascadeRemove(Object(DoctrineProxies'__CG__'Plan), Array)
#6 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(2278): Doctrine'ORM'UnitOfWork->doRemove(Object(DoctrineProxies'__CG__'Plan), Array)
#7 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1688): Doctrine'ORM'UnitOfWork->cascadeRemove(Object(Phase), Array)
#8 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(2278): Doctrine'ORM'UnitOfWork->doRemove(Object(Phase), Array)
#9 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1688): Doctrine'ORM'UnitOfWork->cascadeRemove(Object(DoctrineProxies'__CG__'Project), Array)
#10 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(2278): Doctrine'ORM'UnitOfWork->doRemove(Object(DoctrineProxies'__CG__'Project), Array)
#11 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1688): Doctrine'ORM'UnitOfWork->cascadeRemove(Object(Parameters), Array)
#12 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1659): Doctrine'ORM'UnitOfWork->doRemove(Object(Parameters), Array)
#13 /home/www/html/v3/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(647): Doctrine'ORM'UnitOfWork->remove(Object(Parameters))
#14 /home/www/html/v3/test.php(15): Doctrine'ORM'EntityManager->remove(Object(Parameters))
#15 {main}

所以,我可以假设问题是,phase_id有Null而不是有效的id,因为当我试图删除第二行它工作得很好。

在类Parameters我有下一个映射与阶段:

/**
 * @ManyToOne(targetEntity="Phase", inversedBy="parameters")
 * @JoinColumn(name="phase_id", referencedColumnName="id")
 **/
protected $phase;

在类Phase我有以下:

/**
 * @OneToMany(targetEntity="Parameters", mappedBy="phase")
 */
private $parameters;

我找不到问题在哪里,也许我做错了什么?

当外键上的值为!= NULL时,将创建代理对象。例如,如果你在这里输入0,就会出现这个问题