10.7. Zend_Db_Table_Rowset

10.7.1. µµÀÔ

Å×À̺í Ŭ·¡½º¿¡ ´ëÇØ¼­ find() ȤÀº fetchAll() ¸Þ¼Òµå·Î Äõ¸®¸¦ ½ÇÇàÇϸé, µ¹·ÁÁÖ¾îÁö´Â °á°ú´Â Zend_Db_Table_Rowset_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®°¡ µË´Ï´Ù. Çà ¼¼Æ®¿¡´Â,Zend_Db_Table_Row_Abstract (À»)¸¦ °è½ÂÇÑ ¿ÀºêÁ§Æ®°¡ Æ÷ÇԵ˴ϴÙ. Çà ¼¼Æ®¸¦ »ç¿ëÇØ °¢ Çà ¿ÀºêÁ§Æ®¿¡ ´ëÇØ¼­ ¼ø¼­¿¡ ¾×¼¼½º ÇØ, ÇàÀÇ µ¥ÀÌÅ͸¦ ÀоîµéÀ̰ųª º¯°æÇϰųª ÇÒ ¼ö ÀÖ½À´Ï´Ù.

10.7.2. Çà ¼¼Æ®ÀÇ Ãëµæ

Zend_Db_Table_Abstract ¿¡´Â find() (¿Í)°ú fetchAll() ±×·¸´Ù°í ÇÏ´Â ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù. À̰͵éÀº ¾î´ÀÂÊÀ̳ª Zend_Db_Table_Rowset_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.

·Ê 10.123. Çà ¼¼Æ®ÀÇ ÃëµæÀÇ ¿¹


<?php

$bugs   
= new Bugs();
$rowset $bugs->fetchAll("bug_status = 'NEW'");

10.7.3. Çà ¼¼Æ®·ÎºÎÅÍÀÇ ÇàÀÇ Ãëµæ

Åë»óÀº, Çà ¼¼Æ® ±× ÀÚüº¸´Ù ±× Áß¿¡ Æ÷ÇԵǴ Çà ÂÊÀÌ Áß¿äÇÏ°Ô µË´Ï´Ù. ÀÌ ¸¶µð¿¡¼­´Â, Çà ¼¼Æ®¸¦ ±¸¼ºÇÏ´Â ÇàÀÇ Á¤º¸¸¦ ÃëµæÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

¿Ã¹Ù¸¥ Çü½ÄÀÇ Äõ¸®¿©µµ, °á°ú°¡ Á¦·ÎÇàÀÌ µÇ´Â °ÍÀ» ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÃßÃâ Á¶°Ç¿¡ ÀÏÄ¡ÇÏ´Â ÇàÀÌ µ¥ÀÌŸº£À̽º³»¿¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì µîÀÔ´Ï´Ù. µû¶ó¼­, Çà ¼¼Æ® ¿ÀºêÁ§Æ®ÀÇ ³»¿ëÀÇ Çà ¿ÀºêÁ§Æ®ÀÇ °³¼ö°¡ Á¦·Î°¡ µÇ±âµµ ÇÕ´Ï´Ù. Zend_Db_Table_Rowset_Abstract ÇÏ Countable ÀÎÅÍÆäÀ̽º¸¦ ½ÇÀåÇϰí ÀÖÀ¸¹Ç·Î, count() (À»)¸¦ »ç¿ëÇϸé Çà ¼¼Æ®³»ÀÇ ÇàÀÇ ¼ö¸¦ Á¶»çÇÒ ¼ö ÀÖ½À´Ï´Ù.

·Ê 10.124. Çà ¼¼Æ®³»ÀÇ ÇàÀÇ ¼ö¸¦ ¼¾´Ù


<?php

$rowset   
$bugs->fetchAll("bug_status = 'FIXED'");

$rowCount count($rowset);

if (
$rowCount 0) {
    echo 
"¹ß°ßµÈ Çà¼ö´Â $rowCount ÀÔ´Ï´Ù";
} else {
    echo 
'Äõ¸®¿¡ ¸ÅÄ¡ÇÏ´Â ÇàÀÌ ¾ø½À´Ï´Ù';
}

·Ê 10.125. Çà ¼¼Æ®·ÎºÎÅÍÀÇ ´ÜÀÏÀÇ ÇàÀÇ Àбâ

Çà ¼¼Æ®·ÎºÎÅÍ Çà¿¡ ¾×¼¼½ºÇϱâ À§ÇÑ Á¦ÀÏ °£´ÜÇÑ ¹æ¹ýÀº current() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº, Çà ¼¼Æ®¿¡ Æ÷ÇԵǴ Çà¼ö°¡ ÇϳªÀÎ °æ¿ì¿¡ ÃÖÀûÀÔ´Ï´Ù.


<?php

$bugs   
= new Bugs();
$rowset $bugs->fetchAll("bug_id = 1");
$row    $rowset->current();

Çà ¼¼Æ®¿¡ Æ÷ÇԵǴ Çà¼ö°¡ Á¦·ÎÀÇ °æ¿ì,current() ÇÏÁö¸¸ µ¹·ÁÁÖ´Â °ªÀº PHP ÀÇ null °ªÀÌ µË´Ï´Ù.

·Ê 10.126. Çà ¼¼Æ®ÀÇ Â÷·ÊÂ÷·Ê ó¸®

Zend_Db_Table_Rowset_Abstract (À»)¸¦ °è½ÂÇÑ ¿ÀºêÁ§Æ®´Â SeekableIterator ÀÎÅÍÆäÀ̽º¸¦ ½ÇÀåÇϰí ÀÖ½À´Ï´Ù.Áï, foreach ·çÇÁ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀ» »ç¿ëÇØ ÃëµæÇÑ °³°³ÀÇ °ªÀº Zend_Db_Table_Row_Abstract ¿ÀºêÁ§Æ®°¡ µÇ¾î, À̰ÍÀÌ Å×À̺íÀÇ °¢ Çà¿¡ ´ëÀÀÇÕ´Ï´Ù.


<?php

$bugs 
= new Bugs();

// Å×À̺íÀÇ ¸ðµç ·¹Äڵ带 ÃëµæÇÕ´Ï´Ù
$rowset $bugs->fetchAll();

foreach (
$rowset as $row) {

    
// Ãâ·ÂÀº 'Zend_Db_Table_Row' È¤Àº °Å±â¿¡ ´àÀº °ÍÀÌ µË´Ï´Ù
    
echo get_class($row) . "n";

    
// ÇàÀÇ Ä÷³À» ÀоîµéÀÔ´Ï´Ù
    
$status $row->bug_status;

    
// ÇöÀçÀÇ ÇàÀÇ Ä÷³ÀÇ °ªÀ» º¯°æÇÕ´Ï´Ù
    
$row->assigned_to 'mmouse';

    
// º¯°æÀ» µ¥ÀÌŸº£À̽º¿¡ ½á³À´Ï´Ù
    
$row->save();
}

·Ê 10.127. Çà ¼¼Æ®³»ÀÇ ±âÁ¸ÀÇ À§Ä¡¿¡ÀÇ À̵¿

SeekableIterator (Àº)´Â, ÀÌÅ×·¹ÀÌŸ³»ÀÇ Æ¯Á¤ÀÇ À§Ä¡·Î À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¶§¹®¿¡(À§ÇØ) »ç¿ëÇÏ´Â °ÍÀÌ seek() ¸Þ¼ÒµåÀÔ´Ï´Ù. Çà ¹øÈ£¸¦ °Ç³×ÁÖ¸é, Çà ¼¼Æ®³»ÀÇ ±× ´ÙÀ½ÀÇ À§Ä¡·Î À̵¿ÇÒ ¼ö ÀÖ½À´Ï´Ù. Çà ¹øÈ£´Â 0 (À¸)·ÎºÎÅÍ ½ÃÀ۵Ǵ °Í¿¡ ÁÖÀÇÇսôÙ. À妽º°¡ À߸øµÇ¾î ÀÖ´Â °æ¿ì, ȤÀº Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â ¿¹¿Ü°¡ ½½·Î¿ì µË´Ï´Ù. count() (À»)¸¦ »ç¿ëÇØ °á°úÀÇ Çà¼ö¸¦ È®ÀÎÇÏ°í ³ª¼­ À̵¿Çϵµ·Ï ÇսôÙ.


<?php

$bugs 
= new Bugs();

// Å×À̺íÀÇ ¸ðµç ·¹Äڵ带 ÃëµæÇÕ´Ï´Ù
$rowset $bugs->fetchAll();

// ÀÌÅ×·¹ÀÌŸ¸¦ 9 ¹øÂ°ÀÇ ¿ä¼Ò·Î À̵¿ÇÕ´Ï´Ù (ÃÖÃÊÀÇ ¿ä¼Ò°¡ Á¦·ÎÀÔ´Ï´Ù)
$rowset->seek(8);

// ±×°ÍÀ» ÃëµæÇÕ´Ï´Ù
$row9 $rowset->current();

// ±×¸®°í »ç¿ëÇÕ´Ï´Ù
$row9->assigned_to 'mmouse';
$row9->save();
}

getRow() (Àº)´Â, À§Ä¡¸¦ ¾Ë ¼ö ÀÖ°í ÀÖ´Â °æ¿ì¿¡ Çà ¼¼Æ®³»ÀÇ Æ¯Á¤ÀÇ ÇàÀ» ÃëµæÇϱâ À§ÇÑ ¸Þ¼ÒµåÀÔ´Ï´Ù. ±×·¯³ª, ÀÌ Á¤µµÄ¡´Â Á¦·Î·ÎºÎÅÍ ¼¼±â ½ÃÀÛÇÏ´Â °ÍÀ» ÀØÁö ¾Êµµ·Ï ÇսôÙ. getRow() ÀÇ ÃÖÃÊÀÇ ÆÄ¶ó¹ÌÅÍ´Â, À§Ä¡¸¦ ³ªÅ¸³»´Â Á¤¼öÄ¡ÀÔ´Ï´Ù. 2 ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅÍ´Â ¿É¼ÇÀ¸·Î,boolean °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù. À̰ÍÀº,Rowset ÀÌÅ×·¹ÀÌŸµµ µ¿½Ã¿¡ ±× ÀÚ¸®¼Ò¿¡ À̵¿½ÃŰ´ÂÁö ¾î¶²Áö¸¦ ³ªÅ¸³À´Ï´Ù (µðÆúÆ®´Â false ÀÔ´Ï´Ù).ÀÌ ¸Þ¼Òµå´Â µðÆúÆ®¿¡¼­´Â Zend_Db_Table_Row ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù. ÁöÁ¤ÇÑ À§Ä¡°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â ¿¹¿Ü¸¦ ½½·Î¿ì ÇÕ´Ï´Ù. ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.


<?php

$bugs 
= new Bugs();

// Å×À̺íÀÇ ¸ðµç ·¹Äڵ带 ÃëµæÇÕ´Ï´Ù
$rowset $bugs->fetchAll();

// 9 ¹øÂ°ÀÇ ¿ä¼Ò¸¦ ÃëµæÇÕ´Ï´Ù
$row9->getRow(8);

// ±×¸®°í »ç¿ëÇÕ´Ï´Ù
$row9->assigned_to 'mmouse';
$row9->save();
}

°³°³ÀÇ Çà ¿ÀºêÁ§Æ®¿¡ ¾×¼¼½º Çϸé, ´ÙÀ½Àº Ç×10.6. ¡¸Zend_Db_Table_Row¡¹ ±×¸®°í ¼³¸íÇϰí ÀÖ´Â ¸Þ¼Òµå±ºÀ» ÀÌ¿ëÇØ ÇàÀ» Á¶ÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.

10.7.4. Çà ¼¼Æ®ÀÇ ¹è¿­·Î¼­ÀÇ Ãëµæ

Çà ¼¼Æ®³»ÀÇ ¸ðµç µ¥ÀÌÅÍ¿¡ ´ëÇØ¼­ ¹è¿­·Î¼­ ¾×¼¼½º ÇÏ·Á¸é , Çà ¼¼Æ® ¿ÀºêÁ§Æ®ÀÇ toArray() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. À̰ÍÀº, °¢ Çà ´ÜÀ§·Î ÇϳªÀÇ ¿ä¼Ò°¡ µÇ´Â ¹è¿­À» µ¹·ÁÁÝ´Ï´Ù. °¢ ¿£Æ®¸®´Â ¿¬»ó ¹è¿­ÀÌ µÇ¾î, Ä÷³¸í°ú ±× °ªÀ» °ü·ÃÁöÀ» ¼ö ÀÖ°í ÀÖ½À´Ï´Ù.

·Ê 10.128. toArray() ÀÇ »ç¿ë¹ý


<?php

$bugs   
= new Bugs();
$rowset $bugs->fetchAll();

$rowsetArray $rowset->toArray();

$rowCount 1;
foreach (
$rowsetArray as $rowArray) {
    echo 
"row #$rowCount:n";
    foreach (
$rowArray as $column => $value) {
        echo 
"t$column => $valuen";
    }
    ++
$rowCount;
    echo 
"n";
}

toArray() ÇÏÁö¸¸ µ¹·ÁÁÖ´Â ¹è¿­Àº, °»½ÅÇÒ ¼ö ¾ø½À´Ï´Ù. Áï, ¹è¿­³»ÀÇ °ªÀ» º¯°æÇÏ´Â °ÍÀº °¡´ÉÇÕ´Ï´Ù¸¸, ±×°ÍÀ» µ¥ÀÌŸº£À̽º¿¡ ¹Ý¿µ½Ãų ¼ö ¾ø½À´Ï´Ù.

10.7.5. Çà ¼¼Æ®ÀÇ ½Ã¸®¾Æ¶óÀÌÁî¿Í º¹¿ø

Zend_Db_Table_Rowset_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®´Â ½Ã¸®¾Æ¶óÀÌÁî °¡´ÉÇÕ´Ï´Ù. °³º°ÀÇ Çà ¿ÀºêÁ§Æ®¸¦ ½Ã¸®¾Æ¶óÀÌÁî ÇÏ´Â °Í°ú °°Àº ¹æ½ÄÀ¸·Î, Çà ¼¼Æ®¸¦ ½Ã¸®¾Æ¶óÀÌÁî ÇØ Àá½Ã ÈÄ¿¡ ±×°ÍÀ» º¹¿øÇÒ ¼ö ÀÖ½À´Ï´Ù.

·Ê 10.129. Çà ¼¼Æ®ÀÇ ½Ã¸®¾Æ¶óÀÌÁî

PHP ÀÇ serialize() ÇÔ¼ö¸¦ »ç¿ëÇϰí, Çà ¼¼Æ® ¿ÀºêÁ§Æ®ÀÇ ¾Æ¸£¹ÙÀÌÆ® ½ºÆ®¸²À» Æ÷ÇÔÇÑ ¹®ÀÚ¿­À» ÀÛ¼ºÇÕ´Ï´Ù.


<?php

$bugs   
= new Bugs();
$rowset $bugs->fetchAll();

// ¿ÀºêÁ§Æ®¸¦ ½Ã¸®¾Æ¶óÀÌÁî ÇÕ´Ï´Ù
$serializedRowset serialize($rowset);

// À̰ÍÀ¸·Î,$serializedRowset (À»)¸¦ ÆÄÀÏ µî¿¡ ½á³¾ ¼ö ÀÖ½À´Ï´Ù

·Ê 10.130. ½Ã¸®¾Æ¶óÀÌÁî ÇÑ Çà ¼¼Æ®ÀÇ º¹¿ø

PHP ÀÇ unserialize() ÇÔ¼ö¸¦ »ç¿ëÇϰí, ¿ÀºêÁ§Æ®ÀÇ ¾Æ¸£¹ÙÀÌÆ® ½ºÆ®¸²À» Æ÷ÇÔÇÑ ¹®ÀÚ¿­À» º¹¿øÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â, ¿ø·¡ÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.

µ¹·ÁÁÖ¾îÁø Çà ¼¼Æ® ¿ÀºêÁ§Æ®´Â, Á¢¼ÓÀÌ Àý´Ü µÇ¾ú´Ù »óÅÂÀÎ °Í¿¡ ÁÖÀÇÇսôÙ. Çà ¼¼Æ® ¿ÀºêÁ§Æ®³ª ±× ³»ºÎÀÇ Çà ¿ÀºêÁ§Æ®, ±×¸®°í ±× ÇÁ·ÓÆÛƼ¸¦ ÀоîµéÀÏ ¼ö ÀÖ½À´Ï´Ù¸¸, ±× °ªÀ» º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù.¶Ç, µ¥ÀÌŸº£À̽º Á¢¼ÓÀ» ÇÊ¿ä·Î ÇÏ´Â ¸Þ¼Òµå (¿¹¸¦ µé¾î Á¾¼Ó Å×ÀÌºí¿¡ ´ëÇÑ Äõ¸® µî) µµ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù.


<?php

$rowsetDisconnected 
unserialize($serializedRowset);

// À̰ÍÀ¸·Î ¿ÀºêÁ§Æ®ÀÇ ÇÁ·ÓÆÛƼ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, Àбâ Àü¿ëÀÔ´Ï´Ù
$row $rowsetDisconnected->current();
echo 
$row->bug_description;

[ÁÖÀÇ] º¹¿øÇÑ Çà ¼¼Æ®´Â, ¿Ö Àý´Ü µÈ »óÅÂÀԴϱî?

½Ã¸®¾Æ¶óÀÌÁî ÇÑ ¿ÀºêÁ§Æ®´Â, °¡µ¶Çü½ÄÀÇ ¹®ÀÚ¿­ÀÌ µË´Ï´Ù. µ¥ÀÌŸº£À̽ºÀÇ ¾îÄ«¿îÆ®³ª ÆÐ½º¿öµå¶ó°í ÇÏ´Â Á¤º¸¸¦ ¾ÏȣȭÇÏÁö ¾Ê°í plaintext¿¡ ½Ã¸®¾Æ¶óÀÌÁî ÇØ º¸Á¸Çϸé, ½ÃÅ¥·¯Æ¼»ó ¹®Á¦°¡ µË´Ï´Ù. ±×·¯ÇÑ µ¥ÀÌÅ͸¦ ¹«¹æºñÀÎ »óÅÂ·Î ÅØ½ºÆ® ÆÄÀÏ¿¡ º¸Á¸Çϰųª ÇÏ°í ½ÍÁö´Â ¾ÊÀ» °ÍÀÔ´Ï´Ù. ¶Ç ¸ÞÀϵ¼­ °ø°ÝÀÚ¿¡°Ô µé¿©´Ù ºÁ º¼ ¼ö ÀÖ´Â Àϵµ ÁÁ¾ÆÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ½Ã¸®¾Æ¶óÀÌÁî µÈ ¿ÀºêÁ§Æ®´Â, ¿Ã¹Ù¸¥ ÀÎÁõ Á¤º¸¸¦ ¸ð¸£´Â ÇÑ µ¥ÀÌŸº£À̽º¿¡ ¾×¼¼½º ÇÒ ¼ö ¾ø½À´Ï´Ù.

Àý´Ü µÈ Çà ¼¼Æ®ÀÇ Á¢¼ÓÀ» ºÎȰ½ÃŰ·Á¸é , setTable() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡ÀÇ Àμö·Î¼­´Â, Zend_Db_Table_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇØ °Ç³×ÁÝ´Ï´Ù. Å×ÀÌºí ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÏ·Á¸é , µ¥ÀÌŸº£À̽º¿ÍÀÇ Á¢¼ÓÀÌ ÇÊ¿äÇÕ´Ï´Ù. ±× Å×À̺í°ú Çà ¼¼Æ®¸¦ °ü·ÃÁþ´Â °ÍÀ¸·Î, Çà ¼¼Æ®°¡ µ¥ÀÌŸº£À̽º¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ±× ÀÌÈÄ´Â, Çà ¿ÀºêÁ§Æ®ÀÇ °ªÀ» º¯°æÇØ µ¥ÀÌŸº£À̽º¿¡ º¸Á¸ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

·Ê 10.131. »ê µ¥ÀÌÅͷμ­ÀÇ Çà ¼¼Æ®ÀÇ ºÎȰ


<?php

$rowset 
unserialize($serializedRowset);

$bugs = new Bugs();

// ÀÌ Çà ¼¼Æ®¸¦ Å×ÀÌºí¿¡ ÀçÁ¢¼ÓÇØ,
// µ¥ÀÌŸº£À̽º¿ÍÀÇ Á¢¼ÓÀ» ºÎȰ½Ãŵ´Ï´Ù
$rowset->setTable($bugs);

$row $rowset->current();

// À̰ÍÀ¸·Î, ÇàÀÇ ³»¿ëÀ» º¯°æÇØ º¸Á¸ÇÒ ¼ö ÀÖ½À´Ï´Ù
$row->bug_status 'FIXED';
$row->save();

Çà ¼¼Æ®¸¦ setTable() ±×¸®°í ºÎȰ½Ã۸é, ±× Áß¿¡ Æ÷ÇԵǴ Çà ¿ÀºêÁ§Æ®µµ ¸ðµÎ ºÎȰÇÑ »óŰ¡ µË´Ï´Ù.

10.7.6. Çà ¼¼Æ® Ŭ·¡½ºÀÇ È®Àå

Zend_Db_Table_Rowset_Abstract (À»)¸¦ °è½ÂÇÑ »õ·Î¿î ±¸»ó Ŭ·¡½º¸¦ ÀÛ¼ºÇØ, ±×°ÍÀ» ÀÌ¿ëÇØ Çà ¼¼Æ®ÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¶ÀÚÀûÀÎ Çà Ŭ·¡½º¸¦ ÁöÁ¤ÇÏ·Á¸é , Å×À̺í Ŭ·¡½ºÀÇ protected ¸â¹öÀÌ´Ù $_rowsetClass (À»)¸¦ »ç¿ëÇÏ´ÂÁö, Å×ÀÌºí ¿ÀºêÁ§Æ®ÀÇ constructor¡¡ ¡¡ ÀÇ ÀμöÀÇ ¹è¿­·Î ÁöÁ¤ÇÕ´Ï´Ù.

·Ê 10.132. µ¶ÀÚÀûÀÎ Çà ¼¼Æ® Ŭ·¡½ºÀÇ ÁöÁ¤


<?php

class MyRowset extends Zend_Db_Table_Rowset_Abstract
{
    
// ...µ¶ÀÚÀûÀΠó¸®
}

// µ¶ÀÚÀûÀÎ Çà ¼¼Æ®¸¦, Å×À̺í Ŭ·¡½ºÀÇ ÀüÀνºÅϽº·Î
// µðÆúÆ®·Î¼­ »ç¿ëÇϵµ·Ï(µíÀÌ) ¼³Á¤ÇÕ´Ï´Ù
class Products extends Zend_Db_Table_Abstract
{
    protected 
$_name 'products';
    protected 
$_rowsetClass 'MyRowset';
}

// È¤Àº, Å×À̺í Ŭ·¡½ºÀÇ Æ¯Á¤ÀÇ ÀνºÅϽº¿¡¼­¸¸
// µ¶ÀÚÀûÀÎ Çà ¼¼Æ® Ŭ·¡½º¸¦ »ç¿ëÇϵµ·Ï(µíÀÌ) ¼³Á¤ÇÕ´Ï´Ù
$bugs = new Bugs(array('rowsetClass' => 'MyRowset'));

ÀϹÝÀûÀ¸·Î´Â, Ç¥ÁØÀÇ ±¸»ó Ŭ·¡½º Zend_Db_Rowset ³ª¿Í ´ëºÎºÐÀÇ °æ¿ì´Â ÃæºÐÇϰÚÁö¿ä.±×·¯³ª, ƯÁ¤ÀÇ Å×ÀÌºí¿¡ °íÀ¯ÀÇ Ã³¸®¸¦ Çà ¼¼Æ®¿¡ Ãß°¡ÇÏ°í ½Í¾îÁö±âµµ ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, Çà ¼¼Æ®³»ÀÇ ¸ðµç ÇàÀÇ ³»¿ëÀÇ Áý°è¿ëÀÇ ¸Þ¼Òµå µîÀÔ´Ï´Ù.

·Ê 10.133. Çà ¼¼Æ® Ŭ·¡½º¿¡ »õ·Î¿î ¸Þ¼Òµå¸¦ Ãß°¡ÇÏ´Â ¿¹


<?php

class MyBugsRowset extends Zend_Db_Table_Rowset_Abstract
{
    
/**
     * ÇöÀçÀÇ Çà ¼¼Æ® ¼Ó¿¡¼­,'updated_at' Ä÷³ÀÇ °ªÀÌ
     * ÃÖ´ëÀÎ ÇàÀ» ã¾Æ³À´Ï´Ù
     */
    
public function getLatestUpdatedRow()
    {
        
$max_updated_at 0;
        
$latestRow null;
        foreach (
$this as $row) {
            if (
$row->updated_at $max_updated_at) {
                
$latestRow $row;
            }
        }
        return 
$latestRow;
    }
}

class 
Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_name 'bugs';
    protected 
$_rowsetClass 'MyBugsRowset';
}