2012-06-07 2 views
0

Zend_Db_Rable_Row를 객체로 변환하는 방법. 데이터베이스 테이블에 ''(개체의 전용 변수가 밑줄) 인 ''(밑줄)로 시작하는 개체의 변수와 동일한 열 이름을 가지고 있다고 가정합니다.Zend_Db_Rable_Row를 객체로 변환하는 방법

예를 들어 데이터베이스 테이블 열은 사용자 이름과 변수 이름입니다. 객체가 _username 인 경우

답변

1

개인 변수가 밑줄로 시작하는 경우 이러한 변수에 게터와 설정자가있을 가능성이 큽니다. 예 : private $_myVar에는 설정자 setMyVar()이 있습니다. 이 코드는 행의 각 필드에 적합한 설정기를 호출합니다.

public function convertToObject($row) 
{ 
    $myObject = new MyObject(); 

    foreach ($row->toArray() as $key=>$value) { 
     // find out the name of the setter to call 
     $setterName = 'set' . ucfirst($key); 
     $myObject->$setterName($value); 
    } 

    return $myObject; 
} 
1

Zend_Db_Table_Row는 개체입니다. fetchAll()을 호출하면 Zend_Db_Table_Row 객체 유형의 배열을 반환합니다 (열 이름은 $ row-> column에 액세스하는 보호 된 변수입니다). fetchRow()를 호출하면 단일 Zend_Db_Table_Row 객체가 반환됩니다. 예를 들어

: 당신이 쿼리를 만들기 위해 Zend_Db_Adapter 또는 Zend_Db_Statement를 사용하는 경우에는 몇 가지 다른 동작을 할 수 있습니다

//assume we are working inside a Application_Model_DbTable_ 
public function fetch() { 
$select = $this->select(); 
//here $result would return an array of Row objects that can be iterated over using a foreach 
$result = $this->fetchAll($select); 
//here we would return a single Row Object 
$select->where('id = ?', $id); 
$result = $this->fetchRow($select); 
//you can call toArray() on these objects if you need an array 
$array = $result->toArray(); 

} 
//if you are using these objects in your application you can always access any of the 
//columns using normal object syntax, without the underscores. 
$id = $result->id; 
$name = $result->name; 

.

귀하의 질문을 올바르게 이해 하셨기를 바랍니다.