Zend框架数据映射器和关系?

时间:2011-01-23 20:49:42

标签: zend-framework datamapper

如何使用与数据映射器的关系?快速入门中的示例缺少一些信息,如果我正在处理关系数据,我将如何使用数据映射器。例如

(表)用户 (表)文章 (表)标签

用户-one_to_many-文章-many_to_many-标签

如果我通过数据映射器获得一个用户,那么获取相关文章和标签的最佳方式是什么?它们是否应该在模型中定义?任何例子或最佳实践?

1 个答案:

答案 0 :(得分:1)

如果你有这些“文章”,“用户”和“标签”中的每一个的类,那么你当然可以为你的课程添加额外的方法。例如,你可能有:


class Article {
  public function getTags() {
    // Talk to your DAO object or table data gateway or whatever
    // and instantiate them and return an array of Tag objects 
  }
}

class User {
  public function getArticles() { }
}

或者您可以在静态网关类中实现它们,如:


class Article_Gateway {
  public static function fetchByTag( $tagName ) { }

  public static function fetchByUser( $userName ) { }
}

至于如何实际获取模型中使用的数据行,您可以使用Zend_Db_Table的关系功能来实现(http://framework.zend.com/manual/en/zend.db.table.relationships.html

例如:


$accountsTable = new Accounts();
$accountsRowset = $accountsTable->find(1234);
$user1234 = $accountsRowset->current();

$bugsReportedByUser = $user1234->findDependentRowset('Bugs');