查找“a”行是不是与 ORM 中的“b”行有关系的最有效方法?
Posted
技术标签:
【中文标题】查找“a”行是不是与 ORM 中的“b”行有关系的最有效方法?【英文标题】:Most efficient way to find if row "a" has relation with row "b" in an ORM?查找“a”行是否与 ORM 中的“b”行有关系的最有效方法? 【发布时间】:2012-04-17 16:51:33 【问题描述】:这是我的问题:
SomeTable 和 SomeOtherTable 之间存在 1-N 关系。 用户想修改b行,但只有a行和b行有关系才能修改 因此,我需要查找 SomeTable 中的 a 行与 SomeOtherTable 中的 b 行是否有关系如果可以,请提供一般性答案,然后提供 symfony 1.4 和学说的具体答案。这对更多的人和我在多个框架中工作的人来说很有用。
我需要这个来处理某些表的 CRUD 权限。
我发现这是一个非常反复出现的问题
也许有解决这个问题的模式或插件?
如何充分利用 symfony 缓存系统?目前我只是想出了这个:
$someRow = Doctrine_Query::create()->from('SomeTable')->
where('id = ?', $id_someTable)->
andWhere('id_relation = ?',$id_someOtherTable)->execute();
return $someRow->count() > 0;
由于某种原因,我觉得这很难看...
【问题讨论】:
我觉得我没有正确解释我的问题...对你有意义吗? 【参考方案1】:无论如何,你的标题比你的文字更明确。
你有一个函数called getRelations
in Table.php。因此,您可以检索与对象的所有关系,然后根据结果制作您想要的任何东西。
/**
* Retrieves all relation objects defined on this table.
*
* @return array
*/
public function getRelations()
return $this->_parser->getRelations();
所以:
$relations = Doctrine_Core::getTable('SomeTable')->getRelations();
更多详情,here is the parser getRelations method。
编辑:
如果你想尝试给定的关系,你可以使用hasRelation
。
【讨论】:
我认为我的标题具有误导性。它应该说“在 ORM 中查找对象 A 是否与对象 B 有关系的最有效方法” 我想查找表 A 中 ID 为“a”的行是否与表 B 中 ID 为“b”的行有关系。如果表 A 与表 B 有关系,我想你会回答以上是关于查找“a”行是不是与 ORM 中的“b”行有关系的最有效方法?的主要内容,如果未能解决你的问题,请参考以下文章