如何使用与数据映射器的关系?快速入门中的示例缺少一些信息,如果我正在处理关系数据,我将如何使用数据映射器。例如
(表)用户 (表)文章 (表)标签
用户-one_to_many-文章-many_to_many-标签
如果我通过数据映射器获得一个用户,那么获取相关文章和标签的最佳方式是什么?它们是否应该在模型中定义?任何例子或最佳实践?
答案 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');