php design question - поможет ли тут помощник? - PullRequest
2 голосов
/ 28 ноября 2010

Мне нужно перечислить несколько элементов, которые поступают из источника базы данных 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 - Если вам нужна более подробная информация.Я могу предоставить.Я мог бы подделать что-то, что для меня принято, но для тех, кто хочет помочь, это не так.Итак, просто дайте мне знать.Еще раз большое спасибо.

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

1 Ответ

7 голосов
/ 28 ноября 2010

Поскольку вы используете 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;
    }
}

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

...