2011-06-14 2 views
2

저는 꽤 오랫동안 프로 시저 코드를 프로그래밍 해왔고 최근에는 MVC를 배우고 있습니다. 몇 가지 프레임 워크를 시험해 보았고, 내외부를 배우기 위해 처음부터 직접 작성하고 싶다고 결정했습니다. 지금까지 MVC 프레임 워크가 잘 작동하고 있습니다.하지만 관련 테이블을 쿼리하는 가장 좋은 방법을 결정하려고합니다.MVC : 최상의 쿼리 방법 관련 테이블

은 지금부터, 내 member 모델에서, 나는이 회원의 목록을 얻으려면 다음을 사용 자신의 rank_name

SELECT m.*, r.`name` AS rank_name 
FROM `{$this->table}` AS m 
LEFT JOIN `ranks` AS r 
    ON r.`id` = m.`rank_id` 

이 잘 작동하지만,해야하는데 방법은 아닌 것 같아 MVC에서 완료되었습니다. CakePHP는 같은 프레임 워크 작업을 한 후, 나는 member hasOne의 rank (또는 그것을 hasMany의 memberrank입니까?) 알고

내가 생각하는 유일한 대안이 메소드를 호출 한 후 member 모델에서 자체적으로 members 표를 조회하고 있었다

// member model 
SELECT * 
FROM `{this->table}` 

while($row = $result->fetch_assoc()) { 
    $data []= $row; 
    $data['rank_name'] = $this->Rank->get_name($row['rank_id']); 
} 

을하지만 이것은 각 구성원에 대해 별도의 쿼리를 실행하는 데 매우 효율적이 될 수 없습니다 다음 rank 모델과 같이, 각 행의 순위 이름을 얻을 수 있습니다. 내가 생각한 유일한 다른 개념은 MySQL의 IN(x, y, z) 함수를 사용하여 순위 이름을 얻은 다음 배열을 어떻게 든 병합하는 것입니다.

MVC에서 가장 좋은 방법은 무엇입니까?

답변

1

아마도 ORM (개체 관계형 매퍼)이 당신이 원하는 것일 수 있습니다. ORM은 데이터베이스에서 모델 객체를 저장하고 검색하는 데 도움을줍니다.

PHP의 경우 최선의 선택은 Doctrine입니다.