找到(1234)包括关系

时间:2011-09-14 09:09:43

标签: zend-framework zend-db-table

我有一个模型“事件”(Zend_Db_Table_Abstract),它与其他模型有各种关系。通常我认为我会做这样的事情来找到它及其关系:

$events = new Events();
$event = $events->find($id)->current();
$eventsRelationship1 = $event->findDependentRowset('Relationship1');

由于关系已经建立,我想知道是否有任何类型的自动连接可用或什么。每次我收到我的活动,我都需要拥有所有的关系。目前我只看到两种方法来实现这一目标:

  1. 自己构建查询,硬编码。不喜欢这样,因为它正在解决已建立的关系和“模型方法的便利性”。
  2. 使用单个查询获取每个相关对象。这个也是丑陋的,因为我必须触发太多的查询。
  3. 在考虑获取一组多行时,这甚至更进了一步。对于单个事件,我可以多次查询数据库,但是在获取100行时,连接只是基本的。

    那么,有没有人知道通过使用这些关系创建联接的方法,或者除了对查询进行硬编码之外没有其他办法吗?

    提前致谢

    ·阿尔

1 个答案:

答案 0 :(得分:1)

解决此挑战的方法是“升级”您的数据库访问以使用dataMapper模式。

您实际上是在应用程序中的模型和数据库中的表示之间添加了一个额外的层。此映射器层允许您从不同的表读取/写入数据 - 而不是一个模型和一个表之间的直接链接。

以下是good tutorial。 (有些位你可以跳过 - 我把所有的getter和setter都省略了,就像我只使用代码一样。)

当你刚刚使用Zend_Db_Table_Abstract时,需要一点时间才能让你的头脑顺畅,但这是值得的。