php design question – поможет Помощник здесь?

Я должен перечислить несколько элементов, которые поступают из источника базы данных A, и это: team_id, team_name и team_score (переведено ради объяснения).

Мне нужно зациклиться на них и отобразить эту информацию.

Итак, у меня на стороне DAO:

public function listOfTeams() { $select = $this->select() ->from(array('t'=>'teams'), array('cod_team','name','score')); return $this->fetchAll($select); } 

На контроллере моей команды:

 public function listAction() { $teamsDao = new TeamsDao(); $this->view->infoTeam = $teamsDao->listOfTeams(); } 

И на вид:

 <?php for($i = 0; $i < 30; $i++): ?> <?php if(isset($this->infoTeam[$i])): ?> 

Теперь, на каждом из перечисленных элементов, мне нужно добавить дополнительную информацию.

Эта информация не поступает непосредственно из базы данных, но это результат некоторых вычислений.

Возьмем, к примеру, процент выполненных игр. (Перевод);

 $totalGamesNumber > 0 ? ($gamesDone*100)/$totalGamesNumber : 0); 

Итак, мне нужно собрать общий номер игр из базы данных, а затем для каждой команды мне нужно иметь количество выполненных игр, чтобы у меня мог отображаться процент.

$ GamesDone получают:

 $gameTeamDao->countGamesPerTeam($gameVo, $teamVo); 

Я застрял здесь, потому что я не вижу, где / как я должен позвонить и сделать метод для вычисления процента, чтобы позволить процент оставшихся игр быть представленными вместе с другими данными.

Могу ли я получить какую-то помощь из этой грязи?

Если вам нужно было написать помощника для этого, более или менее, как это будет выглядеть?

Заранее спасибо, MEM

PS – Если вам нужна более подробная информация. Я могу предоставить. Я мог бы простить что-то, что для меня принято, но это для тех, кто хочет помочь, это не так. Итак, просто дай мне знать. Еще раз спасибо.

Обновление: все переводы переведены на английский.

Поскольку вы используете ZF, вы можете сделать все эти вычисления в классе строки таблицы. Вот как. Скажем, ваш класс команд называется Application_Model_DbTable_Teams.

 class Application_Model_DbTable_Teams extends Zend_Db_Table_Abstract { protected $_name = 'teams'; // table name protected $_id = 'teamId'; // table primary key // rows returned by fetchAll() will be of this class protected $_rowClass = 'Application_Model_DbRow_Teams'; } 

Затем вам нужно создать класс Application_Model_DbRow_Teams, в который будут добавлены дополнительные вычисления

 class Application_Model_DbRow_Teams extends Zend_Db_Table_Row_Abstract { public $percentGamesDone; public function init() { // This method gets called automatically by ZF when you instantiate a new // object from this class // This is where you will put your extra calculations, // like percentage games done, etc $this->percentGamesDone = $this->getPercentGames(); } public function getPercentGames() { $calculation = 3; // replace this with real data return $calculation; } } 

Как только вы это сделаете, вы можете просто использовать любой из объявленных свойств строки (например, percentGameDone) непосредственно из представления, поскольку они будут вычислены правильно, когда вы инициируете строки.