Если у вас есть класс для каждого из этих «Article», «User» и «Tag», то вы, безусловно, можете добавить дополнительные методы к своим классам.Например, у вас может быть:
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');