2010-11-28 2 views
2

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

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

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

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

+0

уточните пожалуйста. Мне непонятно, почему вы не можете просто перевести этот расчет в помощника и вывести его там, где это необходимо. Кроме того, это использование ZF, верно? – Gordon 2010-11-28 19:13:24

+0

Да, это так. Да, я могу передать эту информацию в помощника. Мой вопрос в том, что подходящее место? Если да, то какую конкретную информацию я должен передать этому помощнику? Большое спасибо. – MEM 2010-11-28 19:17:14

ответ

7

Поскольку вы используете 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) непосредственно из представления, поскольку они будут вычислены правильно, когда вы инициируете строки.