2009-09-23 4 views
0

두 테이블이 있습니다. 고객 및 주문이라고합시다. 1 : N 관계입니다. 각 주문은 한 명의 고객이 배치하고 한 명의 고객은 많은 주문을 할 수 있습니다.Zend Framework의 "Hierarchical"행 집합?

웹 응용 프로그램은 Zend Framework로 작성되었습니다. 내 목표는 데이터베이스에서 고객을 쿼리하고 가장 최근의 10 개의 주문을 받고 (예를 들어)이 모든 정보를 여러 컨트롤러/뷰/도우미간에 전달할 수있는 단일 개체로 묶은 것입니다. 초기 컨트롤러에서 모든 쿼리 작업을 수행 한 다음 추가 쿼리없이 코드에서 코드로 전달할 수있는 단일 개체 (또는 무엇이든)를 만들고 싶습니다.

초기 단계에서 가능한 한 쿼리를 최소화하고 싶습니다. 즉, 원하는 고객을 쿼리하고이를 통해 열거하고 값을 포함하는 사용자 지정 개체 (또는 배열)를 구성하는 것이 하나의 방법임을 알 수 있습니다. 이 열거 중에 각 고객의 주문을 쿼리하고 각 고객 객체에 대한 정보를 집어 넣었습니다. 나는 고객 객체 컬렉션을 전달할 것이다.

다소 천박한 접근 방식이 부족합니다. 더 나은 접근 방법이 있습니까?

답변

0

아마도 ORM 레이어를 사용해야합니다. Propel 또는 Doctrine입니다. Zend Framework 응용 프로그램과 함께 이들을 혼합 할 수 있습니다 (현재 Propel을 사용하고 있습니다). 이렇게하면 PHP 객체가 반환되므로 적합하다고 생각되는 바로 그것들을 사용할 수 있습니다.

0

memcached 및 Zend_Cache를 사용하여 일종의 캐싱을 구현할 수 있습니다. 가장 최근의 주문을 10 개까지 가질 수 있으며, 어떤 경우에도 새 고객을 삽입하면 해당 고객에 대한 캐시를 삭제하고 다시 채 웁니다. .

+0

흠, 고마워요. 나는 일종의 계층적이고 중첩 된 객체를 만들 수 있기를 정말로 바랬다. 대답은 여러 쿼리를 기반으로 나 자신을 구성한 다음 전달하는 것입니다. 감사! –

+0

그 종류의 객체도 메모리에 저장할 수 있습니다. 컨트롤러를 serialize하고 직렬화하여 컨트롤러의 멤버로 사용할 수 있도록 컨트롤러 플러그인을 직렬화하고 만들 수 있습니다. – Chris

관련 문제