2012-04-06 2 views
0

I는 다음과 같이 읽는 쿼리가 있습니다 교리 쿼리, 내가 잘못 여기서 뭐하는 거지하지 않도록 무엇을

$fields = Doctrine_Core::getTable('model_1')->findByColumnId($id); 

이 분야에 위해서 var_dump를했다, 그리고 예상대로이 데이터를 검색;

은 옆에,이

foreach($fields as $field) 
{ 
$newerFields[$field->getColumnId()] = 
Doctrine_Core::getTable('model2')->findByColumn2Id($field->getColumnId()); 
} 

나는 각각 $ newerFields [$ 필드]에 위해서 var_dump을하고 예상대로 결과를 얻을하지 않습니다. 다음은 내가 시도하고이 작업을 수행 :

foreach($newerFields as $newerField) 
{ 
echo $newerField->getColumn3(); 
} 

을하지만이 밖으로 뱉어 : 정의되지 않은 방법 Doctrine_Collection에 전화 : getColumn3()를 actions.class.php에 줄에 69

내가 할 수 없습니다입니다 내 머리를이 주위에 감추고 그것을 끝내는 방법에 대한 어리둥절한 생각입니다. 누구든지 나를 괴롭힐 수 있니?

+0

그것은 당신이 관계형 테이블이다하지만 난하지 않습니다 leftJoin() – tttony

+0

를 사용한다 관계형 테이블 인 경우 왜해야 이 경우에 leftJoin을 사용하십시오. 무엇이든간에 – user1020069

답변

1

findByColumn2Id은 하나의 결과 만있는 경우에도 findBy이 항상 컬렉션을 반환하기 때문에 Doctrine_Collection을 반환합니다 (테이블 파일에서 정의하지 않은 경우). 결과 하나를 검색하려면 findOneBy을 대신 사용하십시오.

그렇지 않으면, 당신은 데이터를 검색 할 newerFields 차일에 루프를해야합니다 :

// array of Doctrine_Collection 
foreach($newerFields as $newerFieldCollection) 
{ 
    foreach($newerFieldCollection as $newerField) 
    { 
    echo $newerField->getColumn3(); 
    } 
} 
+0

감사합니다. 나는 레코드 컬렉션을보고 있기 때문에 나 자신을 알아 냈고이를 반복했습니다. 솔루션입니다. – user1020069

관련 문제