2010-08-08 5 views
1

나는 그게처럼 이루어집니다 그리고 FetchRow을했다 :
젠드 DB 테이블 추상 그리고 FetchRow에 새 개체를 추가는

$db = new Database(); 
$data = $db->fetchRow($db->select()->where('id = ?',$id)); 

이 그것을 완료, 내가 파일 테이블에서 모든 파일을 검색하고 싶습니다처럼 이 :

$files = new Database(); 
$photos = $files->fetchAll($files->select()->where('id = ?',$data->id)); 

그러나 두 개의 다른 개체를 반환합니다. 하나의 개체에만 어떻게 추가 할 수 있습니까?

내가 할 경우

$this->view->photos = $photos; 
$this->view->data = $data; 

그것은 작동하지만, 어떻게 데이터 내부의 사진을 병합 할 수 있습니다?

감사합니다.

답변

0

시도

$db = new Database(); 
$data = $db->fetchRow($db->select()->where('id = ?',$id)); 

$files = new Database(); 
$photos = $files->fetchAll($files->select()->where('id = ?',$data->id)); 



array_push($photos, $data); 
+0

tryed하지만 작동하지 않았다. 반환 된 값이 객체이고 zend db table abstract가 새 객체 값을 추가 할 수 있다고 생각한다. 최선을 다해서 –

+0

행 집합에 데이터가 있어야하기 때문에 행할 수 없습니다. 결과를 반복 할 때까지는 발생하지 않습니다. 적어도 1.7에서 Zend_Db를 마지막으로 사용하지는 않았습니다. 위의 행 집합을 수동으로 루프하여 배열에 할당해야하거나 모든 데이터가 이전에 액세스 된 경우 행 집합 개체에서 "toArray"를 호출하여 배열을 가져올 수 있지만 또한 행 객체를 배열로 변환합니다. – prodigitalson

+0

예, 할 수 있습니다. 감사합니다
$ row = $ db-> fetchRow ($ dado) -> toArray();
$ fotos [ 'fotos'] = $ db-> fetchRow ($ dado) -> findDependentRowset ('Fotos') -> toArray();
$ data = (object) array_merge ($ row, $ fotos); 감사합니다. –

1

테이블이 다른 유형의 파일로 이루어진 데이터 세트 인 경우 수화되는 방식을 제어해야합니다. 어떤 개체가 쿼리에서 반환됩니다. 이렇게하려면 테이블에 대한 자체 Rowset 클래스를 만들고 Database 클래스의 속성으로 설정해야합니다 (Zend_Db_Table이라고 가정).

이 행 집합 클래스에서는 해당 행 집합의 속성을 해당 함수로 조사한 다음 '데이터'또는 '사진'을 사용할 클래스를 선택합니다. 일을 일관성있게 유지하려면 단일 레코드의 수화를 처리하기 위해 (즉, find 메소드를 사용하여) 테이블 클래스를 수정해야합니다.

+1

(내가 젠드 DB 테이블 추상적를 사용하고 있는데 나는 관계, 나는 $ 로우 -> findDependentRowset 수행하여 두 번째 쿼리를 호출 할 수있어 않았고, 그것을 수행하는 방법 아무 생각이 없다 '사진'); 감사합니다. –

+0

질문을 우리가 말하는 테이블 및/또는 테이블 및 행 클래스 이름으로 업데이트 할 수 있습니까? 나는 당신이 당신의 질문과 당신이 제공 한 클래스 명을 말한 것과 같은 테이블에 모든 테이블이 있었지만 당신이 종속 행렬을 가지고 있음을 안다. – prodigitalson

+0

고마워, 내가 그것을 해결할 수있는 모든 배열을 설정 한 다음 병합 내가 다시 개체로 설정합니다. 답장을 보내 주셔서 감사합니다. –