php - 查找 "a"行是否与 ORM 中的 "b"行有关系的最有效方法?

标签 php mysql orm doctrine symfony-1.4

这是我的问题:

  • 我在 SomeTable 和 SomeOtherTable 之间有 1-N 关系。
  • 用户想修改b行,但只有a行和b行有关系才可以修改
  • 因此,我需要查找 SomeTable 中的行 a 与 SomeOtherTable 中的行 b 是否有关系

如果可以,请提供一般性答案,然后提供针对 symfony 1.4 和 Doctrine 的具体答案。这对于在多个框架中工作的更多人和我自己很有用。

我需要它来处理某些表的 CRUD 权限。

我发现这是一个反复出现的问题

也许有解决这个问题的模式或插件?

  • 您如何充分利用 symfony 缓存系统?

目前我刚想到这个:

$someRow = Doctrine_Query::create()->from('SomeTable')->
  where('id = ?', $id_someTable)->
  andWhere('id_relation = ?',$id_someOtherTable)->execute();
return $someRow->count() > 0;

出于某种原因,我觉得这很丑......

最佳答案

无论如何,你的标题比你的文字更明确。

你有一个函数 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 .

关于php - 查找 "a"行是否与 ORM 中的 "b"行有关系的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195525/

相关文章:

php - 在 php 中更改 header 内容类型

php - 数据未存储在数据库中 [Laravel 5.5]

php - Laravel/MySQL 在 where 子句中使用计算别名列

php - 在一种情况下根据特定列的不同返回结果

python - 杀死负载数据

postgresql - TypeORM:在运行时为 EntityManager(或存储库)动态设置数据库架构?

error-handling - Sequelize 模型重复值检查

php - JavaScript 无法在 <head> 或 <body> 标签内工作

javascript - 单击 php 中的脚本时,Elemente 将使其不可见

php - Symfony2 - 存储库中多对多关系的自定义查询