2014-12-15 4 views
0

PDO::Fetch_Class과 함께 PDO::FetchAll()을 사용하는 경우 모든 개체가 다시 반환되지는 않습니다. 5 또는 6PDO FetchAll Fetch_Class가 모든 행/개체를 반환하지 않음

예 중 단지 하나의 객체 :

$as_object = 'Model_Menu'; $params = NULL;

$result->setFetchMode(PDO::FETCH_CLASS, $as_object, $params);

$result = $result->fetchAll();

그러나 사용 $result->setFetchMode(PDO::FETCH_ASSOC); 나에게 데이터베이스에있는 모든 행을 제공합니다.

나는 Kohana를 사용하므로 실제로 쿼리 전체 빌드를 표시하지 않습니다. 하지만 assoc를 가져 오면 제대로 작동해야하는 동일한 빌드로 모든 결과를 얻으실 수 있습니다.

환경 : 당신이 (null의 $params) 세 번째 인수를 전달하고 있기 때문에

-Linux ubuntu 
-Driver: pdo/mssql/?ORM? 
-Framework: Kohana 

답변

1

아마도, PDO는 재 할당 반복 $paramsPDO::FETCH_CLASS | PDO::FETCH_INTO 일하기의 fetchMode를 가정합니다. PDO::FETCH_CLASS이 아니고 일 때 까지 생성자를 호출하고 모든 속성이 설정된 후에 발생합니다. 생성자를 먼저 호출하려면 페치 모드를 PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE으로 설정해야합니다. 아이디 '이 떠들썩한 이눔 : 워드 프로세서 보면

$result->setFetchMode(
    PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 
    $asObject 
); 
$objects = $result->fetchAll(); 

을, 나는 대부분의 예는 다음과 같이 나타났습니다 :

$stmt->execute(); //<-- execute 
$rows = $stmt->fetchAll(PDO::FETCH_CLASS, 'ClassName');//pass fethcMode upon fetching