2010-11-28 3 views
2

나는 데이터베이스 소스 A에서 오는 몇 가지 요소를 나열해야하며, 이는 team_id, team_name 및 team_score (설명을 위해 번역 됨)입니다.php 디자인 질문 - 도우미가 여기에 도움이됩니까?

루프를 반복하고 그 정보를 표시해야합니다. 우리 팀이 컨트롤러에서

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();      
} 

그리고보기에 :

그래서, 나는 DAO 측에있는 지금

<?php for($i = 0; $i < 30; $i++): ?> 

    <?php if(isset($this->infoTeam[$i])): ?> 

는 것입니다 , 나열된 항목 각각에 더 많은 정보를 추가해야합니다.

해당 정보는 데이터베이스에서 직접 가져 오지는 않지만 일부 계산 결과입니다.

예를 들어 게임을 완료 한 비율을 예로 들어 보겠습니다. (번역 된);

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

그래서, 나는 데이터베이스에서 총 게임 수를 잡기 위해 필요하고, 각 팀을 위해, 내가 표시 할 비율을 가질 수 있도록, 수행 게임의 수 있어야합니다.

$ gamesDone에 의해 얻어진다 : 내가 어디에 있는지/I 호출 방법과 비율을 계산하는 방법을 만들 수 없기 때문에 나는 비율을 허용하기 위해, 여기 붙어

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

게임의 다른 데이터와 함께 제시 완료.

이 진흙에서 도움을받을 수 있습니까?

도우미를 작성해야한다면 다소 어떨까요? 어떻게 생겼을까요? 사전에

감사합니다, MEM

PS - 더 자세한 정보가 필요합니다. 나는 제공 할 수있다. 나는 나를 위해 취해지는 것을 잊어 버릴 수 있지만, 도움을주고 자하는 사람들에게는 잊어 버릴 수 있습니다. 그러니 알려주세요. 다시 한번 고마워.

업데이트 : 모든 게시물을 영어로 번역하여 도움을 받으십시오.

+0

질문을 명확히하십시오. 나에게 왜 그 계산을 도우미에 넣고 필요한 곳으로 출력 할 수 없는지 명확하지 않다. 또한 ZF를 사용하고 있습니다. – Gordon

+0

예. 네, 그 정보를 도우미에 넣을 수 있습니다. 제 질문은 그게 적절한 장소입니까? 그렇다면 특정 정보를 내가 도우미에게 전달해야합니까? 고마워. – MEM

+0

@Gordon : 다른 용어로 말하자면, 당신이나 다른 누군가가 이것을 볼 수 있고, 도우미가 좋은 일이 될 것이라는 점에 주목한다면 도우미는 어떻게 생겼을까요? – MEM

답변

7

ZF를 사용하고 있으므로 테이블 행의 모든 ​​클래스에서이 계산을 수행 할 수 있습니다. 방법은 다음과 같습니다. 팀 클래스가 Application_Model_DbTable_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; 
    } 
} 

, 당신은 단순히 행의 중 하나를 사용할 수 있습니다 여분의 계산을 넣어 곳

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 클래스를 만들 수 (percentGameDone 같은) 속성을 선언해야합니다 직접보기에서 직접 행을 생성 할 때 계산됩니다.

+1

한가지 언급하는 것을 잊어 버렸습니다.이 계산은 뷰 헬퍼가 아니라 모델에 속합니다. – Julian

+0

@Julian : 클래스가 이미 생성되었습니다. 둘 다 Zend_Db_Table_Row_Abstract를 확장하고 클래스 TeamDao와 GameDao 클래스를 호출합니다 (구현 제안에 대한 문제입니까?). – MEM

+0

나는 또한 getters와 setters를 사용하며 아마도 public $ percentGamesDone을 ​​전달할 수 있습니다. VO에 의해? – MEM