Zend framework 找出一个实体是否有关系-如何?

Zend framework 找出一个实体是否有关系-如何?,zend-framework,doctrine-orm,zend-framework2,Zend Framework,Doctrine Orm,Zend Framework2,我试图找到一种方法来找到一个特定实体的关系,比如说一个被删除的实体 设置示例: 国家实体可以有多种货币。 货币实体可以有国家。 一个国家可能有一种主要货币。 因此,设置为:国家1-n国家货币n-1货币 在上面的示例中,很容易找到要删除的国家是否有任何关联货币 但是,假设以上是以一种全局方式设置的,并且可用于应用程序中的其他模块 如果另一个模块(例如Address)在单向关系中使用了一个国家/地区,则地址只有一个国家/地区:我如何确定在不尝试删除特定国家/地区实体并因此收到外键约束错误的情况下不能

我试图找到一种方法来找到一个特定实体的关系,比如说一个被删除的实体

设置示例:

国家实体可以有多种货币。 货币实体可以有国家。 一个国家可能有一种主要货币。 因此,设置为:国家1-n国家货币n-1货币

在上面的示例中,很容易找到要删除的国家是否有任何关联货币

但是,假设以上是以一种全局方式设置的,并且可用于应用程序中的其他模块

如果另一个模块(例如Address)在单向关系中使用了一个国家/地区,则地址只有一个国家/地区:我如何确定在不尝试删除特定国家/地区实体并因此收到外键约束错误的情况下不能删除该实体


我希望这个理论有一些内在的东西,但是在文档中找不到。谷歌已经使用它一段时间了,但没有成功。一直以来的趋势是:你只要$entity->getSomeRelation->count>0,你知道,但是我正在寻找一个通用的解决方案/方法,可以应用于任何实体

没有通用的解决方案,因为它始终取决于您的业务模式

删除具有关系的实体可能会导致不同的场景:

同时删除相关实体 将关系设置为null 或者根本不允许删除。
因此,根据您的情况,您可以手动进行检查。

搜索php原则元数据。元数据描述了所有关系。我有点怀疑你的方法在实践中是否有效,但信息在那里。有趣的信息,忘记了它在那里。然而,这对于我的用例来说是错误的。当我把它应用到我问题中的案例中时,我看到所有的信息都来自我要删除的国家。我看不到在单向关系中使用国家的地址的结果。如associationMappings属性->中的ClassMetadata实体所示,包含Countrycoordinates和CountryCurrency的链接。如果你有其他想法,我会全神贯注地寻找正确方向的指针。我想你可以尝试使用Doctrine数据库抽象层模式工具来检查sql数据库中是否存在外键约束。但我仍然怀疑你的整个方法。你真的认为你会遇到这种问题吗?设置一个配置变量怎么样?啊,但这就是问题所在。我正在努力创造一些可以在全球范围内运作的东西。类似于$entity->isusedbyforeignkey或$entity->canBeDeleted或$entity->hassociationspointedatit的内容。它确实在全球范围内起作用,因为它可能是这样写的,在我的问题示例中,当你试图删除一个地址使用的国家时,MySQL就是这样做的,而第一个不知道后者。如果你有任何指向那个方向的指示,我洗耳恭听。我理解你,但恐怕这不是一个好的方向:。如果您真的想实现它,我建议您从原则元数据开始。您可以检索有关所有已定义关联的信息。当您拥有这些数据时,您可以构建需要检查每个实体的实体列表。构建列表不是一个简单的操作,因此您应该缓存它,并确保在模型发生更改时更新缓存,然后编写检查它的函数。您可能会面临组合键、级联操作和性能方面的问题。祝你好运