10.5. Zend_Db_Table

10.5.1. Å×À̺í Ŭ·¡½º¿¡ µµÂøÇØ

Zend_Db_Table Ŭ·¡½º´Â, µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡ÀÇ °´Ã¼ ÁöÇâÀÇ ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. Å×ÀÌºí¿¡ ´ëÇÑ ´Ù¾çÇÑ °øÅë Á¶ÀÛÀ» À§ÇÑ ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù. base class´Â È®Àå °¡´ÉÇØ¼­, µ¶ÀÚÀûÀÎ ³í¸®¸¦ Â¥³ÖÀ» ¼öµµ ÀÖ½À´Ï´Ù.

Zend_Db_Table (Àº)´Â, Å×ÀÌºí µ¥ÀÌÅÍ °ÔÀÌÆ®¿þÀÌ ÆÐÅÏÀ» ½ÇÀåÇÑ °ÍÀÔ´Ï´Ù.¶Ç, ±× ¿Ü¿¡µµ Çà µ¥ÀÌÅÍ °ÔÀÌÆ®¿þÀÌ ÆÐÅÏÀ» ½ÇÀåÇÑ Å¬·¡½ºµµ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.

10.5.2. Å×À̺í Ŭ·¡½ºÀÇ Á¤ÀÇ

µ¥ÀÌŸº£À̽º³»¿¡¼­ ¾×¼¼½º ÇÏ°í ½ÍÀº Å×ÀÌºí °¢°¢ ºÙ°í, Zend_Db_Table_Abstract (À»)¸¦ °è½ÂÇÑ Å¬·¡½º¸¦ Á¤ÀÇÇÕ´Ï´Ù.

10.5.2.1. Å×À̺í¸í ¹× schemaÀÇ Á¤ÀÇ

±× Ŭ·¡½º°¡ Á¤ÀÇÇϰí ÀÖ´Â µ¥ÀÌŸº£À̽ºÀÇ Å×À̺íÀ» Á¤ÀÇÇÏ·Á¸é , protected º¯¼ö $_name (À»)¸¦ »ç¿ëÇÕ´Ï´Ù. À̰ÍÀº ¹®ÀÚ¿­·Î, µ¥ÀÌŸº£À̽º·ÎÀÇ Å×À̺í¸íÀ» ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

·Ê 10.71. Å×À̺í¸íÀ» ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÏ´Â °Í¿¡ ÀÇÇÑ Å×À̺í Ŭ·¡½ºÀÇ ¼±¾ð


<?php

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

Å×À̺í¸íÀ» ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ìÀÇ µðÆúÆ®´Â, Ŭ·¡½º¸íÀÌ µË´Ï´Ù. ÀÌ µðÆúÆ®¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â, Ŭ·¡½º¸íÀ» µ¥ÀÌŸº£À̽º·ÎÀÇ Å×À̺í¸íÀ¸·Î ÀÏÄ¡½Ãų Çʿ䰡 ÀÖ½À´Ï´Ù.

·Ê 10.72. Å×À̺í¸íÀ» ¾Ï¹¬ÀûÀ¸·Î ÁöÁ¤ÇÏ´Â °Í¿¡ ÀÇÇÑ Å×À̺í Ŭ·¡½ºÀÇ ¼±¾ð


<?php

class bugs extends Zend_Db_Table_Abstract
{
    
// Å×À̺í¸í°ú Ŭ·¡½º¸íÀÌ ÀÏÄ¡ÇÕ´Ï´Ù
}

Å×À̺íÀÇ schema¿¡ ´ëÇØ¼­µµ,protected º¯¼ö $_schema ±×¸®°í ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ȤÀº $_name ÇÁ·ÓÆÛƼ·Î Å×À̺í¸íÀÇ Àü¿¡ schema¸íÀ» ¿¬°áÇØ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. $_name ±×¸®°í ÁöÁ¤ÇÑ schema ÂÊÀÌ, $_schema ÇÁ·ÓÆÛƼ·Î ÁöÁ¤ÇÑ schemaº¸´Ù ¿ì¼±µË´Ï´Ù. RDBMS ¿¡ µû¶ó¼­´Â schema¸¦ ¡¸µ¥ÀÌŸº£À̽º¡¹³ª ¡¸°Ñ(Ç¥) ¿µ¿ª¡¹ µîÀ̶ó°í Çϱ⵵ ÇÕ´Ï´Ù¸¸, ¶È°°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. schema¸¦, Å×À̺í¸íÀÇ ÀϺημ­ ¼±¾ðÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

·Ê 10.73. Å×À̺í Ŭ·¡½º¿¡¼­ÀÇ schemaÀÇ ¼±¾ð


<?php

// Ã¹Â°ÀÇ ¹æ¹ý

class Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_schema 'bug_db';
    protected 
$_name   'bugs';
}

// µÑ°ÀÇ ¹æ¹ý

class Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_name 'bug_db.bugs';
}

// schema¸¦ $_name (¿Í)°ú $_schema ÀÇ ¾çÂÊ ¸ðµÎ·Î ÁöÁ¤ÇßÀ» °æ¿ì´Â,
// $_name ±×¸®°í ÁöÁ¤ÇÑ °ÍÀÌ ¿ì¼±µË´Ï´Ù

class Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_name   'bug_db.bugs';
    protected 
$_schema 'ignored';
}

schema¸í°ú Å×À̺í¸íÀº, constructor¡¡ ¡¡ ÀÇ ¼³Á¤ Áö½Ã¹®¿¡¼­µµ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº,$_name (ÀÌ)³ª $_schema ±×·¸´Ù°í ÇÏ´Â ÇÁ·ÓÆÛƼ·Î ¼³Á¤ÇÑ µðÆúƮġ¸¦ µ¡¾²±âÇÕ´Ï´Ù. name Áö½Ã¹®À¸·Î ÁöÁ¤ÇÑ schema¸íÀº, schema ¿É¼ÇÀ¸·Î ÁöÁ¤ÇÑ schema¸íºÎÅÍ ¿ì¼±µË´Ï´Ù.

·Ê 10.74. ÀνºÅϽº ÀÛ¼º½ÃÀÇ Å×À̺í¸í°ú schema¸íÀÇ ÁöÁ¤


<?php

class Bugs extends Zend_Db_Table_Abstract
{
}

// ÃÖÃÊÀÇ ¹æ¹ý

$tableBugs = new Bugs(array('name' => 'bugs''schema' => 'bug_db'));

// ¶Ç ÇϳªÀÇ ¹æ¹ý

$tableBugs = new Bugs(array('name' => 'bug_db.bugs');

// schema¸¦ 'name' (¿Í)°ú 'schema' ÀÇ ¾çÂÊ ¸ðµÎ·Î ÁöÁ¤ÇßÀ» °æ¿ì´Â,
// 'name' ±×¸®°í ÁöÁ¤ÇÑ °ÍÀÌ ¿ì¼±µË´Ï´Ù

$tableBugs = new Bugs(array('name' => 'bug_db.bugs''schema' => 'ignored');

schema¸íÀ» ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ìÀÇ µðÆúÆ®´Â, ±× µ¥ÀÌŸº£À̽º ¾î´ðÅͰ¡ Á¢¼ÓÇϰí ÀÖ´Â schema°¡ µË´Ï´Ù.

10.5.2.2. Å×À̺íÀÇ ÁÖŰÀÇ Á¤ÀÇ

¸ðµç Å×À̺íÀº ÁÖ۸¦ °¡ÁöÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÁÖŰ Ä÷³À» ¼±¾ðÇÏ·Á¸é ,protected º¯¼ö $_primary (À»)¸¦ »ç¿ëÇÕ´Ï´Ù. À̰ÍÀº, ´ÜÀÏÀÇ Ä÷³ÀÇ À̸§À» ³ªÅ¸³»´Â ¹®ÀÚ¿­Àΰ¡, ¸¸¾à ÁÖ۰¡ º¹ÇÕ Å°ÀÇ °æ¿ì´Â Ä÷³¸íÀÇ ¹è¿­ÀÌ µË´Ï´Ù.

·Ê 10.75. ÁÖ۸¦ ÁöÁ¤ÇÏ´Â ¿¹


<?php

class Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_name 'bugs';
    protected 
$_primary 'bug_id';
}

ÁÖ۸¦ ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â,Zend_Db_Table_Abstract ÇÏ describeTable() ¸Þ¼ÒµåÀÇ Á¤º¸¿¡ ±Ù°ÅÇØ ÁÖ۸¦ ã¾Æ³À´Ï´Ù.

[ÁÖÀÇ] ÁÖÀÇ

¸ðµç Å×À̺í Ŭ·¡½º´Â, ÇàÀ» ÀÏÀÇ·Î °áÁ¤Çϱâ À§Çؼ­ ¾î´À Ä÷³À» »ç¿ëÇÏ´ÂÁö¸¦ ¾Ë°í ÀÖÀ» Çʿ䰡 ÀÖ½À´Ï´Ù. Å×À̺í Ŭ·¡½ºÀÇ Á¤Àdzª constructor¡¡ ¡¡ ÀÇ Àμö, ȤÀº describeTable() ¿¡ ÀÇÇÑ ¸ÞŸµ¥ÀÌŸ·Î ÁÖŰ Ä÷³ÀÌ Á¤ÀǵǾî ÀÖÁö ¾ÊÀº °æ¿ì´Â, ±× Å×À̺íÀ» Zend_Db_Table ±×¸®°í »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

10.5.2.3. Å×À̺íÀÇ ¼³Á¤ ¸Þ¼ÒµåÀÇ ¿À¹ö¶óÀ̵å(override)

Å×À̺í Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¶§¿¡, constructor¡¡ ¡¡ ³»¿¡¼­ ¸î°³ÀÇ protected ¸Þ¼Òµå¸¦ ÄÝ ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, Å×À̺íÀÇ ¸ÞŸµ¥ÀÌŸ¸¦ ÃʱâÈ­ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼Òµå¸¦ È®ÀåÇϰí, ¸ÞŸµ¥ÀÌŸ¸¦ ¸í½ÃÀûÀ¸·Î Á¤ÀÇÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. ±× °æ¿ì´Â, ¸Þ¼ÒµåÀÇ ÃÖÈķΠģŬ·¡½ºÀÇ µ¿¸íÀÇ ¸Þ¼Òµå¸¦ ÄÝ ÇÏ´Â °ÍÀ» ÀØÁö ¾Êµµ·Ï ÇսôÙ.

·Ê 10.76. _setupTableName() ¸Þ¼ÒµåÀÇ ¿À¹ö¶óÀ̵å(override)ÀÇ ¿¹


<?php

class Bugs extends Zend_Db_Table_Abstract
{
    protected function 
_setupTableName()
    {
        
$this->_name 'bugs';
        
parent::_setupTableName();
    }
}

¿À¹ö¶óÀ̵å(override) ÇÒ ¼ö ÀÖ´Â ¸Þ¼Òµå´Â, ´ÙÀ½°ú °°½À´Ï´Ù.

  • _setupDatabaseAdapter() (Àº)´Â, ¾î´ðÅͰ¡ ¼³Á¤µÇ¾î ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇØ Çʿ信 µû¶ó¼­ ·¹Áö½ºÆ®¸®·ÎºÎÅÍ µðÆúÆ®ÀÇ ¾î´ðÅ͸¦ ÃëµæÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) Çϸé, µ¥ÀÌŸº£À̽º ¾î´ðÅ͸¦ ´Ù¸¥ Àå¼Ò·ÎºÎÅÍ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • _setupTableName() (Àº)´Â, µðÆúÆ®ÀÇ Å×À̺í¸íÀ» Ŭ·¡½º¸íÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) Çϸé, ÀÌ Ã³¸® Àü¿¡ Å×À̺í¸íÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • _setupMetadata() (Àº)´Â Å×À̺í¸íÀÌ "schema.table" Çü½ÄÀÇ °æ¿ì¿¡ schema¸¦ ¼³Á¤ÇØ, describeTable() (À»)¸¦ ÄÝ ÇØ ¸ÞŸµ¥ÀÌŸ Á¤º¸¸¦ ÃëµæÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â ¹è¿­ÀÇ Ä÷³ $_cols ÀÇ Á¤º¸¸¦ µðÆúÆ®·Î »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) Çϸé, Ä÷³À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • _setupPrimaryKey() (Àº)´Â µðÆúÆ®ÀÇ ÁÖ۸¦ describeTable() (À¸)·ÎºÎÅÍ ÃëµæÇÑ ³»¿ëÀ¸·Î ¼³Á¤ÇØ, ¹è¿­ $_cols ¿¡ ÁÖŰ Ä÷³ÀÌ Æ÷ÇԵǾî ÀÖ´ÂÁö ¾î¶²Áö¸¦ Á¶»çÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) Çϸé, ÁÖŰ Ä÷³À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

10.5.2.4. Å×À̺íÀÇ ÃʱâÈ­

Å×À̺í Ŭ·¡½ºÀÇ ÀÛ¼º½Ã¿¡ ¾îÇø®ÄÉÀÌ¼Ç °íÀ¯ÀÇ ³í¸®¸¦ ÃʱâÈ­ÇÏ°í ½ÍÀº °æ¿ì´Â, ±× ÀÛ¾÷À» init() ¸Þ¼Òµå·Î ½Ç½ÃÇÕ´Ï´Ù. À̰ÍÀº, Å×À̺íÀÇ ¸ÞŸµ¥ÀÌŸ°¡ ¸ðµÎ ó¸®µÈ ÈÄ¿¡ ÄÝ µË´Ï´Ù. ¸ÞŸµ¥ÀÌŸ¸¦ º¯°æÇÒ »ý°¢ÀÌ ¾ø´Ù¸é,__construct ¸Þ¼Òµåº¸´Ù ÀÌÂÊÀ» »ç¿ëÇÏ´Â °ÍÀ» Ãßõ ÇÕ´Ï´Ù.

·Ê 10.77. init() ¸Þ¼ÒµåÀÇ »ç¿ë¿¹


<?php

class Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_observer;

    protected function 
init()
    {
        
$this->_observer = new MyObserverClass();
    }
}


10.5.3. Å×À̺íÀÇ ÀνºÅϽºÀÇ ÀÛ¼º

Å×À̺í Ŭ·¡½º¸¦ »ç¿ëÇϱâ Àü¿¡, constructor¡¡ ¡¡ À¸·Î ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù. constructor¡¡ ¡¡ ÀÇ Àμö´Â ¿É¼ÇÀÇ ¹è¿­ÀÌ µË´Ï´Ù. Å×À̺íÀÇ constructor¡¡ ¡¡ ÀÇ ¿É¼Ç °¡¿îµ¥, °¡Àå Áß¿äÇÑ °ÍÀº µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ ÀνºÅϽº°¡ µË´Ï´Ù. À̰ÍÀº RDBMS ¿¡ÀÇ À¯È¿ÇÑ Á¢¼ÓÀ» ³ªÅ¸³À´Ï´Ù. µ¥ÀÌŸº£À̽º ¾î´ðÅ͸¦ Å×À̺í Ŭ·¡½º·Î ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº 3°Å¸®ÀÖ½À´Ï´Ù. °¢°¢ ºÙ°í, ÀÌÇÏ·Î ¼³¸íÇÕ´Ï´Ù.

10.5.3.1. µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ ÁöÁ¤

µ¥ÀÌŸº£À̽º ¾î´ðÅ͸¦ Å×À̺í Ŭ·¡½º·Î ÁöÁ¤ÇÏ´Â ÃÖÃÊÀÇ ¹æ¹ýÀº, Zend_Db_Adapter_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ ¿É¼ÇÀÇ ¹è¿­·Î °Ç³×ÁÖ´Â °ÍÀÔ´Ï´Ù. ¹è¿­ÀÇ Å°´Â 'db' µË´Ï´Ù.

·Ê 10.78. ¾î´ðÅÍ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÑ, Å×À̺íÀÇ ÀÛ¼ºÀÇ ¿¹


<?php

$db 
Zend_Db::factory('PDO_MYSQL'$options);

$table = new Bugs(array('db' => $db));

10.5.3.2. µðÆúÆ®ÀÇ µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ ¼³Á¤

µ¥ÀÌŸº£À̽º ¾î´ðÅ͸¦ Å×À̺í Ŭ·¡½º·Î ÁöÁ¤ÇÏ´Â µÎ¹øÂ°ÀÇ ¹æ¹ýÀº, µðÆúÆ®ÀÇ µ¥ÀÌŸº£À̽º ¾î´ðÅͷμ­ Zend_Db_Adapter_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ ¼±¾ðÇÏ´Â °ÍÀÔ´Ï´Ù.±× ¾îÇø®ÄÉÀ̼dz»¿¡¼­, ÀÌ ÀÌÈÄ¿¡ ÀÛ¼ºÇÑ Å×À̺í ÀνºÅϽº¿¡ ´ëÇϰí À̰ÍÀÌ ÀÌ¿ëµË´Ï´Ù. À̰ÍÀ» ½Ç½ÃÇÏ·Á¸é , Á¤Àû ¸Þ¼Òµå Zend_Db_Table_Abstract::setDefaultAdapter() (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.Àμö´Â,Zend_Db_Adapter_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®°¡ µË´Ï´Ù.

·Ê 10.79. µðÆúÆ® ¾î´ðÅ͸¦ »ç¿ëÇÑ, Å×À̺íÀÇ ÀÛ¼ºÀÇ ¿¹


<?php

$db 
Zend_Db::factory('PDO_MYSQL'$options);
Zend_Db_Table_Abstract::setDefaultAdapter($db);

// ±× ÈÄ...

$table = new Bugs();

À̰ÍÀº, ¿¹¸¦ µé¾î ±âµ¿ ÆÄÀϵ¼­ µ¥ÀÌŸº£À̽º ¾î´ðÅÍ ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇØ, ±×°ÍÀ» µðÆúÆ®ÀÇ ¾î´ðÅͷμ­ º¸Á¸ÇØ µÎ´Â °æ¿ì µî¿¡ Æí¸®ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ¾îÇø®ÄÉÀÌ¼Ç Àüü·Î °øÅëÀÇ ¾î´ðÅ͸¦ »ç¿ëÇÏ´Â °ÍÀÌ º¸ÁõµË´Ï´Ù. ±×·¯³ª, µðÆúÆ®ÀÇ ¾î´ðÅÍÀÇ ÀνºÅϽº´Â, Çϳª ¹Û¿¡ ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù.

10.5.3.3. µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ ·¹Áö½ºÆ®¸®¿¡ÀÇ º¸Á¸

µ¥ÀÌŸº£À̽º ¾î´ðÅ͸¦ Å×À̺í Ŭ·¡½º·Î ÁöÁ¤ÇÏ´Â 3¹øÂ°ÀÇ ¹æ¹ýÀº, ¹®ÀÚ¿­À»À» ¿É¼ÇÀÇ ¹è¿­·Î °Ç³×ÁÖ´Â °ÍÀÔ´Ï´Ù. ¹è¿­ÀÇ Å°´Â, ÀÌ °æ¿ìµµ 'db' µË´Ï´Ù. ÀÌ ¹®ÀÚ¿­Àº, Á¤ÀûÀÎ Zend_Registry ÀνºÅϽºÀÇ Å°·Î¼­ »ç¿ëÇÕ´Ï´Ù. ÀÌ Å°ÀÇ ¿£Æ®¸®°¡ Zend_Db_Adapter_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®°¡ µË´Ï´Ù.

·Ê 10.80. ·¹Áö½ºÆ®¸®ÀÇ Å°¸¦ »ç¿ëÇÑ, Å×À̺íÀÇ ÀÛ¼ºÀÇ ¿¹


<?php

$db 
Zend_Db::factory('PDO_MYSQL'$options);
Zend_Registry::set('my_db'$db);

// ±× ÈÄ...

$table = new Bugs(array('db' => 'my_db'));

µðÆúÆ® ¾î´ðÅÍÀÇ ÁöÁ¤°ú °°ÀÌ, À̰Ϳ¡ ÀÇÇØ, ¾îÇø®ÄÉÀÌ¼Ç Àüü·Î °øÅëÀÇ ¾î´ðÅ͸¦ »ç¿ëÇÏ´Â °ÍÀÌ º¸ÁõµË´Ï´Ù. ·¹Áö½ºÆ®¸®¿¡´Â º¹¼öÀÇ ¾î´ðÅÍ ÀνºÅϽº¸¦ º¸Á¸ÇÒ ¼ö ÀÖ±â À§ÇØ, º¸´Ù À¯¿¬ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.ÁöÁ¤ÇÑ ¾î´ðÅÍ ÀνºÅϽº´Â ƯÁ¤ÀÇ RDBMS (ÀÌ)³ª µ¥ÀÌŸº£À̽º ÀνºÅϽº¿¡ °íÀ¯ÀÇ °ÍÀÌ µË´Ï´Ù. º¹¼öÀÇ µ¥ÀÌŸº£À̽º¿¡ ¾×¼¼½º ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì´Â, º¹¼öÀÇ ¾î´ðÅͰ¡ ÇÊ¿äÇÕ´Ï´Ù.

10.5.4. Å×ÀÌºí¿¡ÀÇ ÇàÀÇ »ðÀÔ

Å×ÀÌºí ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇϰí, ±× ¿ÀºêÁ§Æ®ÀÇ ¹ÙÅÁÀ¸·Î µÇ¾î ÀÖ´Â Å×ÀÌºí¿¡ ÇàÀ» »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù.±×·¯±â À§Çؼ­´Â, Å×ÀÌºí ¿ÀºêÁ§Æ®ÀÇ insert() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.Àμö´Â ¿¬»ó ¹è¿­·Î, Ä÷³¸í°ú °ªÀÇ ´ëÀÀÀ» ÁöÁ¤ÇÕ´Ï´Ù.

·Ê 10.81. Å×ÀÌºí¿¡ÀÇ »ðÀÔÀÇ ¿¹


<?php

$table 
= new Bugs();

$data = array(
    
'created_on'      => '2007-03-22',
    
'bug_description' => '¹«¾ùÀΰ¡ ÀÌ»óÇÏ´Ù',
    
'bug_status'      => 'NEW'
);

$table->insert($data);

µðÆúÆ®¿¡¼­´Â, ¹è¿­³»ÀÇ °ªÀº ¸®ÅÍ·²Ä¡·Î¼­ ´Ù·ç¾îÁ® ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇØ »ðÀԵ˴ϴÙ.À̰ÍÀ» SQL ÀÇ ½ÄÀ¸·Î¼­ Ãë±ÞÇÏ°í ½ÍÀº °æ¿ì´Â, ¹®ÀÚ¿­ÀÌ ¾Æ´Ñ Çü½Ä¿¡¼­ ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.±× ¶§¿¡´Â Zend_Db_Expr ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÕ´Ï´Ù.

·Ê 10.82. ½ÄÀ» Å×ÀÌºí¿¡ »ðÀÔÇÏ´Â ¿¹


<?php

$table 
= new Bugs();

$data = array(
    
'created_on'      => new Zend_Db_Expr('CURDATE()'),
    
'bug_description' => '¹«¾ùÀΰ¡ ÀÌ»óÇÏ´Ù',
    
'bug_status'      => 'NEW'
);

À§ÀÇ ¿¹¿¡¼­´Â, Å×ÀÌºí¿¡´Â ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ ÁÖ۰¡ ÀÖ´Â °ÍÀ¸·Î ÇÕ´Ï´Ù. À̰ÍÀº Zend_Db_Table_Abstract ÀÇ µðÆúÆ®ÀÇ °Åµ¿ÀÔ´Ï´Ù¸¸, ±× ÀÌ¿ÜÀÇ Çü½ÄÀÇ ÁÖ۵µ Ãë±ÞÇÒ ¼ö ÀÖ½À´Ï´Ù.ÀÌÇÏÀÇ ¸¶µð¿¡¼­´Â, ´Ù¾çÇÑ Çü½ÄÀÇ ÁÖ۸¦ Ãë±ÞÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.

10.5.4.1. ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°¸¦ °¡Áö´Â Å×À̺íÀÇ »ç¿ë

ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ ÁÖŰ´Â,SQL ÀÇ INSERT ¹®ÀåÀ¸·Î ÁÖŰ¿­À» »ý·« ÇßÀ» °æ¿ì¿¡ ÀÏÀÇÀÎ Á¤¼öÄ¡¸¦ »ý¼ºÇÕ´Ï´Ù.

Zend_Db_Table_Abstract ±×¸®°í protected º¯¼ö $_sequence ÀÇ °ªÀ» boolean ÀÇ true (À¸)·Î Çϸé, ±× Å×À̺íÀº ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ ÁÖ۸¦ °¡Áö´Â °ÍÀ¸·Î °£ÁÖÇØÁý´Ï´Ù.

·Ê 10.83. ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ ÁÖ۸¦ °¡Áö´Â Å×À̺íÀ» ¼±¾ðÇÏ´Â ¿¹


<?php

class Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_name 'bugs';

    
// À̰ÍÀº Zend_Db_Table_Abstract Å¬·¡½ºÀÇ µðÆúÆ® ¼³Á¤ÀÔ´Ï´Ù.
    // Æ¯È÷ Á¤ÀÇÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
    
protected $_sequence true;
}

MySQL,Microsoft SQL Server ±×¸®°í SQLite µîÀÇ RDBMS ÇÏÁö¸¸, ÁÖŰÀÇ ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)¸¦ ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.

PostgreSQL ÀÇ SERIAL ±â¹ýÀ» »ç¿ëÇϸé, Å×À̺í¸í°ú Ä÷³¸íÀ» ±âÃÊ·Î ÇØ¼­ ¾Ï¹¬ÀûÀ¸·Î ¼ø¼­¸¦ Á¤ÀÇÇÕ´Ï´Ù. »õ·Î¿î ÇàÀ» ÀÛ¼ºÇßÀ» ¶§¿¡´Â ÀÌ ¼ø¼­¸¦ ÀÌ¿ëÇØ ŰÀÇ °ªÀ» »ý¼ºÇÕ´Ï´Ù. IBM DB2 ¿¡´Â, À̰Ͱú µ¿µîÀÇ µ¿ÀÛÀ» ÇÑ´Ù IDENTITY ±×·¸´Ù°í ÇÏ´Â ±â¹ýÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ±â¹ýÀ» »ç¿ëÇÏ´Â °æ¿ì´Â,Zend_Db_Table Ŭ·¡½º¿¡¼­ $_sequence (À»)¸¦ true (¿Í)°ú ¼³Á¤ÇØ, ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)¸¦ À¯È¿ÇÏ°Ô ÇØ ÁÖ¼¼¿ä.

10.5.4.2. ¼ø¼­¸¦ °¡Áö´Â Å×À̺íÀÇ »ç¿ë

¼ø¼­¿Í´Â µ¥ÀÌŸº£À̽ºÀÇ ¿ÀºêÁ§Æ®ÀÇ ÀÏÁ¾À¸·Î, ÀÏÀÇÀÎ °ªÀ» »ý¼ºÇÏ´Â °ÍÀÔ´Ï´Ù.À̰ÍÀ», Çϳª ȤÀº º¹¼öÀÇ Å×À̺íÀÇ ÁÖŰÀÇ °ªÀ¸·Î ÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

$_sequence ¿¡ ¹®ÀÚ¿­À» ¼³Á¤Çϸé, Zend_Db_Table_Abstract (Àº)´Â, ±×°ÍÀÌ µ¥ÀÌŸº£À̽ºÀÇ ¼ø¼­ ¿ÀºêÁ§Æ®ÀÇ À̸§À̶ó°í °£ÁÖÇÕ´Ï´Ù. ¼ø¼­¸¦ ½ÇÇàÇØ »õ·Î¿î °ªÀ» »ý¼ºÇØ, ±× °ªÀ» INSERT Á¶ÀÛÀ¸·Î »ç¿ëÇÕ´Ï´Ù.

·Ê 10.84. ¼ø¼­¸¦ ÀÌ¿ëÇÑ Å×À̺íÀ» ¼±¾ðÇÏ´Â ¿¹


<?php

class Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_name 'bugs';

    protected 
$_sequence 'bug_sequence';
}

Oracle,PostgreSQL ±×¸®°í IBM DB2 µîÀÇ RDBMS ÇÏÁö¸¸, µ¥ÀÌŸº£À̽º·ÎÀÇ ¼ø¼­ ¿ÀºêÁ§Æ®¸¦ ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.

PostgreSQL ¹× IBM DB2 (Àº)´Â, ¾Ï¹¬ÀûÀ¸·Î ¼ø¼­¸¦ Á¤ÀÇÇϰí Ä÷³¿¡ °ü·ÃÁþ´Â ±¸¹®µµ ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù. ÀÌ ±â¹ýÀ» »ç¿ëÇÏ´Â °æ¿ì´Â, ±× Å×À̺í·Î ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment) ŰÀÇ Ä÷³À» »ç¿ëÇϵµ·Ï(µíÀÌ) ÇÕ´Ï´Ù. ¼ø¼­ÀÇ Å°ÀÇ ´ÙÀ½ÀÇ °ªÀ» ÃëµæÇÏ´Â ÀÏÀÌ ÀÖ´Â °æ¿ì¿¡°Ô¸¸ ¼ø¼­¸íÀ» ¹®ÀÚ¿­·Î Á¤ÀÇÇÕ´Ï´Ù.

10.5.4.3. ÀÚ¿¬ ۸¦ °¡Áö´Â Å×À̺íÀÇ »ç¿ë

ÀÚ¿¬ ۸¦ °¡Áö´Â Å×ÀÌºíµµ ÀÖ½À´Ï´Ù.ÀÚ¿¬ ۶õ, Å×À̺íÀ̳ª ¼ø¼­¿¡ ÀÇÇØ¼­ ÀÚµ¿ »ý¼ºµÇ´Â °Í ÀÌ¿ÜÀÇ Å°¶ó°í ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ °æ¿ì´Â, ÁÖŰÀÇ °ªÀ» ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

$_sequence ÀÇ °ªÀ» boolean ÀÇ false (À¸)·Î Çϸé,Zend_Db_Table_Abstract (Àº)´Â ±× Å×À̺íÀÌ ÀÚ¿¬ ۸¦ °¡Áö´Â °ÍÀ¸·Î °£ÁÖÇÕ´Ï´Ù. insert() ¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¶§ , ÁÖŰ Ä÷³ÀÇ °ªÀ» µ¥ÀÌÅÍÀÇ ¹è¿­·Î ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì, ÀÌ ¸Þ¼Òµå´Â Zend_Db_Table_Exception (À»)¸¦ ½½·Î¿ì ÇÕ´Ï´Ù.

·Ê 10.85. ÀÚ¿¬ ۸¦ ÀÌ¿ëÇÑ Å×À̺íÀ» ¼±¾ðÇÏ´Â ¿¹


<?php

class BugStatus extends Zend_Db_Table_Abstract
{
    protected 
$_name 'bug_status';

    protected 
$_sequence false;
}

[ÁÖÀÇ] ÁÖÀÇ

ÀÚ¿¬ ŰÀÇ Å×À̺íÀº, ¸ðµç RDBMS ÇÏÁö¸¸ ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù. ÀÚ¿¬ ۸¦ »ç¿ëÇÏ´Â Å×À̺íÀÇ ¿¹·Î¼­´Â, ·è¾÷Å×À̺íÀ̳ª ´Ù´ë ´Ù¸±·¹À̼ÇÀÇ Áß°£ Å×À̺í, ±×¸®°í º¹ÇÕÁÖ۸¦ °¡Áö´Â ´ëºÎºÐÀÇ Å×À̺íµîÀÌ ÀÖ½À´Ï´Ù.

10.5.5. Å×À̺íÀÇ ÇàÀÇ °»½Å

µ¥ÀÌŸº£À̽ºÀÇ Å×À̺íÀÇ ÇàÀ» °»½ÅÇÏ·Á¸é , Å×À̺í Ŭ·¡½ºÀÇ update ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¿¡´Â µÎ °³ÀÇ Àμö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.º¯°æÇÏ´Â Ä÷³°ú ±×·¯ÇÑ Ä÷³¿¡ ´ëÀÔÇÏ´Â »õ·Î¿î °ªÀ» ³ªÅ¸³»´Â ¿¬»ó ¹è¿­, ±×¸®°í UPDATE Á¶ÀÛÀÇ ´ë»óÀÌ µÇ´Â ÇàÀ» ÁöÁ¤ÇÑ´Ù WHERE ±¸·Î »ç¿ëÇÑ´Ù SQL ½ÄÀÔ´Ï´Ù.

·Ê 10.86. Å×À̺íÀÇ ÇàÀÇ °»½ÅÀÇ ¿¹


<?php

$table 
= new Bugs();

$data = array(
    
'updated_on'      => '2007-03-23',
    
'bug_status'      => 'FIXED'
);

$where $table->getAdapter()->quoteInto('bug_id = ?'1234);

$table->update($data$where);

Å×À̺íÀÇ update() ¸Þ¼Òµå´Â µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ update() ¸Þ¼Òµå¿¡ÀÇ ÇÁ·Ï½ÃÀ̹ǷÎ, µÎ¹øÂ°ÀÇ Àμö´Â,SQL ½ÄÀÇ ¹è¿­·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× °æ¿ì, °¢°¢ÀÇ ½ÄÀÌ ³í¸® ¿¬»êÀÚ AND ±×¸®°í ¿¬°áµË´Ï´Ù.

[ÁÖÀÇ] ÁÖÀÇ

SQL ½Ä¾ÈÀÇ °ªÀ̳ª ½Äº°ÀÚ´Â, ÀÚµ¿ÀûÀ¸·Î´Â ÄíÆ® µÇÁö ¾Ê½À´Ï´Ù. ÄíÆ®°¡ ÇÊ¿äÇÑ °ªÀ̳ª ½Äº°ÀÚ¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â, ½º½º·Î ÄíÆ® ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ quote(),quoteInto() ¹× quoteIdentifier() (À»)¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.

10.5.6. Å×ÀÌºí¿¡¼­ÀÇ ÇàÀÇ »èÁ¦

µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡¼­ ÇàÀ» »èÁ¦ÇÏ·Á¸é , Å×À̺í Ŭ·¡½ºÀÇ delete() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå¿¡´Â ÇϳªÀÇ Àμö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.ÀÌ Àμö´Â WHERE ±¸·Î »ç¿ëÇÑ´Ù SQL ½Ä¿¡¼­, À̰Ϳ¡ ÀÇÇØ, »èÁ¦ ´ë»óÀÌ µÇ´Â ÇàÀ» ÁöÁ¤ÇÕ´Ï´Ù.

·Ê 10.87. Å×ÀÌºí¿¡¼­ÀÇ ÇàÀÇ »èÁ¦ÀÇ ¿¹


<?php

$table 
= new Bugs();

$where $table->getAdapter()->quoteInto('bug_id = ?'1235);

$table->delete($where);

µÎ¹øÂ°ÀÇ Àμö´Â,SQL ½ÄÀÇ ¹è¿­·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× °æ¿ì, °¢°¢ÀÇ ½ÄÀÌ ³í¸® ¿¬»êÀÚ AND ±×¸®°í ¿¬°áµË´Ï´Ù.

Å×À̺íÀÇ delete() ¸Þ¼Òµå´Â µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ delete() ¸Þ¼Òµå¿¡ÀÇ ÇÁ·Ï½ÃÀ̹ǷÎ, µÎ¹øÂ°ÀÇ Àμö´Â,SQL ½ÄÀÇ ¹è¿­·Î ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× °æ¿ì, °¢°¢ÀÇ ½ÄÀÌ ³í¸® ¿¬»êÀÚ AND ±×¸®°í ¿¬°áµË´Ï´Ù.

[ÁÖÀÇ] ÁÖÀÇ

SQL ½Ä¾ÈÀÇ °ªÀ̳ª ½Äº°ÀÚ´Â, ÀÚµ¿ÀûÀ¸·Î´Â ÄíÆ® µÇÁö ¾Ê½À´Ï´Ù. ÄíÆ®°¡ ÇÊ¿äÇÑ °ªÀ̳ª ½Äº°ÀÚ¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â, ½º½º·Î ÄíÆ® ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ quote(),quoteInto() ¹× quoteIdentifier() (À»)¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.

10.5.7. ÁÖŰ¿¡ ÀÇÇÑ ÇàÀÇ °Ë»ö

µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡ ´ëÇØ¼­, ÁöÁ¤ÇÑ ÁÖŰÀÇ °ª¿¡ ´ëÀÀÇÏ´Â ÇàÀ» ¹®ÀÇÇÏ·Á¸é find() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼ÒµåÀÇ ÃÖÃÊÀÇ Àμö´Â, Å×À̺íÀÇ ÁÖŰ¿¡ ´ëÀÀÇÑ´Ù ´ÜÀÏÀÇ °ªÀΰ¡, ȤÀº º¹¼öÀÇ °ªÀÇ ¹è¿­ÀÌ µË´Ï´Ù.

·Ê 10.88. ÁÖŰÀÇ °ª¿¡ ÀÇÇØ¼­ ÇàÀ» ã´Â ¿¹


<?php

$table 
= new Bugs();

// ´ÜÀÏÀÇ ÇàÀ» ã¾Æ,
// Rowset (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù
$rows $table->find(1234);

// º¹¼öÀÇ ÇàÀ» ã¾Æ,
// ÀÌÂʵµ Rowset (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù
$rows $table->find(array(12345678));

´ÜÀÏÀÇ °ªÀ» ÁöÁ¤ÇßÀ» °æ¿ì´Â, ÀÌ ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â Çà¼ö´Â ÃÖ´ë¿¡¼­µµ ÀÏÇàÀÌ µË´Ï´Ù. ÁÖŰÀÇ °ªÀÌ Áߺ¹ ÇÒ °ÍÀº ¾ø±â ¶§¹®¿¡, ÁöÁ¤ÇÑ °ª¿¡ ´ëÀÀÇÏ´Â ÇàÀº Å×ÀÌºí³»¿¡¼­ ÃÖ´ë¿¡¼­µµ ÀÏÇุÀ̱⠶§¹®ÀÔ´Ï´Ù. º¹¼öÀÇ °ªÀ» ¹è¿­·Î ÁöÁ¤ÇßÀ» °æ¿ì´Â, ÀÌ ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â °á°úÀÇ ÃÖ´ë¼ö´Â ¹è¿­·Î ÁöÁ¤ÇÑ °ªÀÇ ¼ö°¡ µË´Ï´Ù.

find() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â Çà¼ö´Â, ÁÖŰ·Î ÁöÁ¤ÇÑ °ªº¸´Ù Àû°Ô µÉÁöµµ ¸ð¸¨´Ï´Ù. ¿¹¸¦ µé¾î ÁöÁ¤ÇÑ °ª¿¡ ´ëÀÀÇÏ´Â ÇàÀÌ µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡ Á¸ÀçÇÏÁö ¾Ê¾Ò´ø °æ¿ì µîÀÔ´Ï´Ù. ÀÌ ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â Çà¼ö°¡ Á¦·Î°¡ µÉ °¡´É¼ºµµ ÀÖ½À´Ï´Ù. ÀÌ¿Í °°ÀÌ °á°úÀÇ Çà¼ö°¡ °¡º¯À̹ǷÎ,find() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â ¿ÀºêÁ§Æ®ÀÇ ÇüÅ´ Zend_Db_Table_Rowset_Abstract µË´Ï´Ù.

ÁÖ۰¡ º¹ÇÕ Å°ÀÇ °æ¿ì, Áï º¹¼öÀÇ Ä÷³À¸·ÎºÎÅÍ ±¸¼ºµÇ´Â ŰÀÇ °æ¿ì´Â, Ãß°¡ÀÇ Ä÷³À» find() ¸Þ¼ÒµåÀÇ Àμö·Î ÁöÁ¤ÇÕ´Ï´Ù. Å×À̺íÀÇ ÁÖŰÀÇ Ä÷³¼ö¿Í °°Àº ¼öÀÇ Àμö¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

º¹ÇÕÁÖŰÀÇ Å×ÀÌºí¿¡¼­ º¹¼öÇàÀ» ÃëµæÇÏ·Á¸é , °¢ Àμö¸¦ ¹è¿­·Î ÁöÁ¤ÇÕ´Ï´Ù.ÀÌ°Íµé ¸ðµç ¹è¿­ÀÇ ¿ä¼Ò¼ö´Â °°Áö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. °¢ ¹è¿­ÀÇ °ªÀÌ, ±× ¼ø¼­¿¡ Ű¿­ÀÇ °ªÀ¸·Î ÇØ¼­ ÀÌ¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, ¸ðµç ¹è¿­ÀÇ ÃÖÃÊÀÇ ¿ä¼Ò·Î º¹ÇÕÁÖŰÀÇ ÃÖÃÊÀÇ °ªÀ» ÁöÁ¤ÇØ, ¸ðµç ¹è¿­ÀÇ µÎ¹øÂ°ÀÇ ¿ä¼Ò·Î º¹ÇÕÁÖŰÀÇ µÎ¹øÂ°ÀÇ °ªÀ» ¼³Á¤ÇØ,¡¦¡¦ (¿Í)°ú °°ÀÌ µË´Ï´Ù.

·Ê 10.89. º¹ÇÕÁÖŰÀÇ °ªÀÇ ÁöÁ¤¿¡ ÀÇÇÑ ÇàÀÇ ÃëµæÀÇ ¿¹

ÀÌÇÏÀÇ find() ¸Þ¼Òµå´Â, µ¥ÀÌŸº£À̽º³»ÀÇ µÎ Çà¿¡ ¸ÅÄ¡ÇÕ´Ï´Ù. ÃÖÃÊÀÇ ÇàÀÇ ÁÖŰÀÇ °ªÀº (1234, 'ABC') ±×¸®°í, ´ÙÀ½ÀÇ ÇàÀÇ ÁÖŰÀÇ °ªÀº (5678, 'DEF') µË´Ï´Ù.


<?php

class BugsProducts extends Zend_Db_Table_Abstract
{
    protected 
$_name 'bugs_products';
    protected 
$_primary = array('bug_id''product_id');
}

$table = new BugsProducts();

// ´ÜÀÏÀÇ ÇàÀ» º¹ÇÕÁÖŰ·Î ã¾Æ,
// Rowset (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù
$rows $table->find(1234'ABC');

// º¹¼öÀÇ ÇàÀ» º¹ÇÕÁÖŰ·Î ã¾Æ,
// ÀÌÂʵµ Rowset (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù
$rows $table->find(array(12345678), array('ABC''DEF'));

10.5.8. Çà ¼¼Æ®ÀÇ ¹®ÀÇ

10.5.8.1. Select API

[°æ°í] °æ°í

Ãëµæ Á¶ÀÛ¿ëÀÇ API (Àº)´Â º¯°æµÇ¾î Zend_Db_Table_Select ¿ÀºêÁ§Æ®·Î Äõ¸®¸¦ º¯°æÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù. ±×·¯³ª, ¿¾³¯ºÎÅÍ ¹æ¹ýÀÌ´Ù fetchRow() (ÀÌ)³ª fetchAll() (Àº)´Â Áö±Ýµµ ¶È°°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

´ÙÀ½ÀÇ ¹®ÀåÀº, ¸ðµÎ ¿Ã¹ß¶ó °°Àº µ¿ÀÛÀ» ÇÕ´Ï´Ù. ±×·¯³ª, »õ·Î¿î »ç¿ë¹ýÀ¸·Î ´ëÀÀÇϱâ À§Çؼ­µµ °¡´ÉÇÑ ÇÑ »õ·Î¿î ¾²´Â ¹ýÀ¸·Î º¯°æÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù.


// Çà ¼¼Æ®¸¦ ÃëµæÇÕ´Ï´Ù
    $rows = $table->fetchAll('bug_status = "NEW"', 'bug_id ASC', 10, 0);
    $rows = $table->fetchAll($table->select()->where('bug_status = ?', 'NEW')
                                             ->order('bug_id ASC')
                                             ->limit(10, 0));

    // ´ÜÀÏÀÇ ÇàÀ» ÃëµæÇÕ´Ï´Ù
    $row = $table->fetchRow('bug_status = "NEW"', 'bug_id ASC');
    $row = $table->fetchRow($table->select()->where('bug_status = ?', 'NEW')
                                            ->order('bug_id ASC'));

Zend_Db_Table_Select ¿ÀºêÁ§Æ®´Â Zend_Db_Select (À»)¸¦ °è½ÂÇÑ °ÍÀ̾î, Äõ¸®¿¡´Â ¸î°³Àΰ¡ Á¦ÇÑÀÌ ÀÖ½À´Ï´Ù.Ãß°¡µÈ ±â´ÉÀ̳ª Á¦ÇÑ »çÇ×À» ÀÌÇÏ¿¡ Á¤¸®ÇÕ´Ï´Ù.

  • fetchRow ȤÀº fetchAll ÀÇ Äõ¸®·Î, Ä÷³ÀÇ ºÎºÐÁýÇÕÀ» µ¹·ÁÁÖ´Â °ÍÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù. °á°ú°¡ °Å´ëÇÑ °ÍÀÌ µÇÁö¸¸ ±× Áß¿¡´Â »ç¿ëÇÏÁö ¾Ê´Â Ä÷³µµ ÀÖ´Ù ±×·¸´Ù°í ÇßÀ» °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù.

  • select ÇÒ ¶§¿¡, ½ÄÀÇ °á°ú¸¦ Ä÷³À¸·Î¼­ ÁöÁ¤ÇÏ´Â °ÍÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, ÀÌ °æ¿ì´Â Çà (ȤÀº Çà ¼¼Æ®) ÇÏ readOnly µÇ¾î,save() ÇÒ ¼ö ¾ø½À´Ï´Ù.readOnly Zend_Db_Table_Row ¿¡ ´ëÇØ¼­ save() (À»)¸¦ ½ÇÇàÇÏ·Á°í Çϸé, ¿¹¿Ü°¡ ½½·Î¿ì µË´Ï´Ù.

  • select ±×¸®°í JOIN ±¸¸¦ »ç¿ëÇϰí, º¹¼ö Å×ÀÌºí¿¡¼­ÀÇ °Ë»öÀ» ½Ç½ÃÇÏ´Â °ÍÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • JOIN ÇÑ Å×À̺íÀÇ Ä÷³À» °á°úÀÇ ÇàÀ̳ª Çà ¼¼Æ®·Î ÁöÁ¤ÇÏ´Â °ÍÀº ÇÒ ¼ö ¾ø½À´Ï´Ù. ±×·¸´Ù¸é, ¿¹¿Ü°¡ ½½·Î¿ì µË´Ï´Ù. À̰Ϳ¡ ÀÇÇØ,Zend_Db_Table ÀÇ Á¤ÇÕ¼ºÀÌ º¸ÁõµË´Ï´Ù.Áï, Zend_Db_Table_Row (Àº)´Â ±× ºÎ¸ðÀÇ Å×À̺íÀÇ Ä÷³ ¹Û¿¡ ÂüÁ¶ÇÏÁö ¾Ê´Â´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.

·Ê 10.90. ´Ü¼øÇÑ »ç¿ë¹ý


<?php

$table 
= new Bugs();

$select $table->select();
$select->where('bug_status = ?''NEW');

$rows $table->fetchAll($select);


ÀÌ ÄÄÆÛ³ÍÆ®¿¡¼­´Â ¡¸È帣´Â ÀÎÅÍÆäÀ̽º¡¹ (À»)¸¦ ½ÇÀåÇϰí ÀÖÀ¸¹Ç·Î, ÀÌ ¿¹´Â ´õ »ý·« ÇÏ°í ¾µ ¼öµµ ÀÖ½À´Ï´Ù.

·Ê 10.91. È帣´Â ÀÎÅÍÆäÀ̽ºÀÇ ¿¹


<?php

$table 
= new Bugs();

$rows $table->fetchAll($table->select()->where('bug_status = ?''NEW'));


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

ÁÖŰÀÇ °ª Àܸ̿¦ Á¶°ÇÀ¸·Î¼­ Ç༼Ʈ¸¦ ¹®ÀÇÇÏ·Á¸é , Å×À̺í Ŭ·¡½ºÀÇ fetchAll() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â,Zend_Db_Table_Rowset_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.

·Ê 10.92. ½ÄÀ¸·ÎºÎÅÍ ÇàÀ» ÃëµæÇÏ´Â ¿¹


<?php

$table 
= new Bugs();

$select $table->select()->where('bug_status = ?''NEW');

$rows $table->fetchAll($select);

ORDER BY (À¸)·ÎÀÇ ´Ã¾î³õ¾Æ ¹Ù²Ù¾îÀÇ Á¶°Ç±¸³ª ¿ÀÇÁ¼ÂÀ» ³ªÅ¸³»´Â Á¤¼öÄ¡¸¦ ÁöÁ¤Çϰí, Äõ¸®°¡ µ¹·ÁÁÖ´Â °á°ú¸¦ Á¼Èú ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °ªÀº LIMIT ±¸·Î ÀÌ¿ëµË´Ï´Ù. LIMIT ±¸¹®À» ¼­Æ÷Æ®Çϰí ÀÖÁö ¾Ê´Ù RDBMS ±×·³, ±×°Í°ú µ¿µîÀÇ ³í¸®·Î ÀÌ¿ëµË´Ï´Ù.

·Ê 10.93. ½ÄÀ» »ç¿ëÇÑ ÇàÀÇ °Ë»öÀÇ ¿¹


<?php

$table 
= new Bugs();

$order  'bug_id';

// 21 ¹øÂ°·ÎºÎÅÍ 30 ¹øÂ°ÀÇ ÇàÀ» µ¹·ÁÁÝ´Ï´Ù
$count  10;
$offset 20;

$select $table->select()->where(array('bug_status = ?' => 'NEW'))
                          ->
order($order)
                          ->
limit($count$offset);

$rows $table->fetchAll($select);

ÀÌ·¯ÇÑ ¿É¼ÇÀº ¸ðµÎ, Çʼö°¡ ¾Æ´Õ´Ï´Ù. ORDER ±¸¸¦ »ý·« ÇßÀ» °æ¿ì´Â, °á°ú ¼¼Æ®¿¡ º¹¼öÀÇ ÇàÀÌ Æ÷ÇԵǴ °æ¿ìÀÇ ÁÙ ¼ø¼­´Â ¿¹Ãø ºÒ°¡´ÉÇÕ´Ï´Ù. LIMIT ±¸¸¦ »ý·« ÇßÀ» °æ¿ì´Â,WHERE ±¸¿¡ ¸ÅÄ¡ÇÏ´Â ¸ðµç ÇàÀ» ÃëµæÇÏ°Ô µË´Ï´Ù.

10.5.8.3. °íµµÀÇ »ç¿ë¹ý

¸®Äù½ºÆ®ÀÇ ³»¿ëÀ» º¸´Ù ¸íÈ®ÇÏ°Ô ÁöÁ¤ÇØ ÃÖÀûÈ­Çϱâ À§Çؼ­, Çà/Çà ¼¼Æ®°¡ µ¹·ÁÁÖ´Â Ä÷³ÀÇ ¼ö¸¦ Á¼È÷°í ½ÍÀº °Íµµ ÀÖ°ÚÁö¿ä. À̰ÍÀº,select ¿ÀºêÁ§Æ®ÀÇ FROM ±¸·Î ½Ç½ÃÇÕ´Ï´Ù. FROM ±¸ÀÇ ÃÖÃÊÀÇ Àμö´Â Zend_Db_Select ¿ÀºêÁ§Æ®¿Í °°½À´Ï´Ù¸¸, ÇÑÃþ ´õ Zend_Db_Table_Abstract ÀÇ ÀνºÅϽº¸¦ °Ç³×ÁÙ ¼öµµ ÀÖ¾î Å×À̺í¸íÀ» ÀÚµ¿ÀûÀ¸·Î °ËÃâÇÕ´Ï´Ù.

·Ê 10.94. ÁöÁ¤ÇÑ Ä÷³ÀÇ Ãëµæ


<?php

$table 
= new Bugs();

$select $table->select();
$select->from($table, array('bug_id''bug_description'))
       ->
where('bug_status = ?''NEW');

$rows $table->fetchAll($select);


[Áß¿ä Ç׸ñ] Áß¿ä Ç׸ñ

ÀÌ »óÅ¿¡¼­µµ, Çà ¼¼Æ® ÀÚü´Â '¿Ã¹Ù¸£´Ù' Çü½ÄÀÔ´Ï´Ù. ´ÜÁö ÇϳªÀÇ Å×À̺í¾ÈÀÇ ÀϺÎÀÇ Ä÷³À» Æ÷ÇÔÇϰí ÀÖ´Ù°í ÇÒ »ÓÀÔ´Ï´Ù. ÀÌ ¾ÈÀÇ Çà¿¡ ´ëÇØ¼­ save() ¸Þ¼Òµå¸¦ ÄÝ Çϸé, °Å±â¿¡ Æ÷ÇԵǾî ÀÖ´Â Çʵ常À» °»½ÅÇÕ´Ï´Ù.

FROM ±¸·Î ½ÄÀ» ÁöÁ¤Çϸé, ±× °á°ú¸¦ readOnly ÀÇ Çà/Çà ¼¼Æ® (À¸)·Î¼­ µ¹·ÁÁÝ´Ï´Ù.ÀÌ ¿¹¿¡¼­´Â,bugs Å×À̺íÀ» °Ë»öÇØ °³Àκ°ÀÇ ¹ö±×ÀÇ º¸°í °Ç¼ö¸¦ ÃëµæÇϰí ÀÖ½À´Ï´Ù. GROUP ±¸¿¡ ÁÖ¸ñÇսôÙ.À̰ÍÀ¸·Î, µ¹·ÁÁÖ¾îÁö´Â Çà¿¡ 'count' ±×·¸´Ù°í ÇÏ´Â Ä÷³ÀÌ Æ÷ÇÔµÇ°Ô µÇ¾î, schemaÀÇ ´Ù¸¥ Ä÷³°ú °°ÀÌ ¾×¼¼½º ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

·Ê 10.95. ½ÄÀÇ °á°ú¸¦ Ä÷³À¸·Î¼­ ÃëµæÇÑ´Ù


<?php

$table 
= new Bugs();

$select $table->select();
$select->from($table, array('COUNT(reported_by) as `count`''reported_by'))
       ->
where('bug_status = ?''NEW')
       ->
group('reported_by');

$rows $table->fetchAll($select);


Äõ¸®ÀÇ ÀϺο¡ ·è¾÷Å×À̺íÀ» »ç¿ëÇØ, º¸´Ù Á¼Çô ÃëµæÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ¿¹¿¡¼­´Â, °Ë»ö½Ã¿¡ accounts Å×À̺íÀ» »ç¿ëÇØ 'Bob' ÇÏÁö¸¸ º¸°íÇÑ ¸ðµç ¹ö±×¸¦ ã°í ÀÖ½À´Ï´Ù.

·Ê 10.96. ·è¾÷Å×ÀÌºí¿¡ ÀÇÇÑ´Ù fetchAll() ÀÇ °á°úÀÇ ¾ö¼±


<?php

$table 
= new Bugs();

$select $table->select();
$select->where('bug_status = ?''NEW')
       ->
join('accounts''accounts.account_id = bugs.reported_by')
       ->
where('accounts.account_name = ?''Bob');

$rows $table->fetchAll($select);


Zend_Db_Table_Select ÀÇ ÁÖµÈ »ç¿ë ¸ñÀûÀº, Á¦¾àÀ» °­¿äÇØ ¿Ã¹Ù¸¥ Çü½ÄÀÇ SELECT Äõ¸®¸¦ ÀÛ¼ºÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·¯³ª ¶§¿¡´Â,Zend_Db_Table_Row ÀÇ À¯¿¬¼ºÀÌ ÇÊ¿äÇØ ÇàÀ» °»½ÅÇϰųª »èÁ¦Çϰųª ÇÒ °ÍÀº ¾ø´Ù°í Çϱ⵵ ÇÕ´Ï´Ù. ±×·± °æ¿ì¿¡´Â,setIntegrityCheck ¿¡ false (À»)¸¦ °Ç³×ÁÖ¾î Çà/Çà ¼¼Æ®¸¦ ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì¿¡ µ¹·ÁÁÖ¾îÁö´Â Çà/Çà ¼¼Æ®´Â '¶ô µÇ¾ú´Ù' Çà (save(),delete() (ÀÌ)³ª ÇʵåÀÇ ¼³Á¤¿ë ¸Þ¼Òµå¸¦ ½ÇÇàÇÏ¸é ¿¹¿Ü°¡ ¹ß»ýÇÑ´Ù) µË´Ï´Ù.

·Ê 10.97. Zend_Db_Select ÀÇ Á¤ÇÕ¼º üũ¸¦ »èÁ¦ÇØ,JOIN ÇÑ ÇàÀ» Çã°¡ÇÑ´Ù


<?php

$table 
= new Bugs();

$select $table->select()->setIntegrityCheck(false);
$select->where('bug_status = ?''NEW')
       ->
join('accounts''accounts.account_id = bugs.reported_by''account_name')
       ->
where('accounts.account_name = ?''Bob');

$rows $table->fetchAll($select);

10.5.9. ´ÜÀÏÀÇ ÇàÀÇ ¹®ÀÇ

fetchAll() (¿Í)°ú °°Àº Á¶°ÇÀ» ÁöÁ¤Çϰí, ´ÜÀÏÀÇ ÇàÀ» ¹®ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

·Ê 10.98. ½ÄÀ¸·ÎºÎÅÍ ´ÜÀÏÀÇ ÇàÀ» ÃëµæÇÏ´Â ¿¹


<?php

$table 
= new Bugs();

$select  $table->select()->where('bug_status = ?''NEW')
                           ->
order('bug_id');

$row $table->fetchRow($where);

ÀÌ ¸Þ¼Òµå´Â,Zend_Db_Table_Row_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù. ÁöÁ¤ÇÑ °Ë»ö Á¶°Ç¿¡ ÀÏÄ¡ÇÏ´Â ÇàÀÌ µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡ ¾ø´Â °æ¿ì´Â, fetchRow() ÇÏ PHP ÀÇ null °ªÀ» µ¹·ÁÁÝ´Ï´Ù.

10.5.10. Å×À̺íÀÇ ¸ÞŸµ¥ÀÌŸ Á¤º¸ÀÇ Ãëµæ

Zend_Db_Table_Abstract Ŭ·¡½º´Â, ¸ÞŸµ¥ÀÌŸ¿¡ °üÇÑ ¸î°³ÀÇ Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù. info() ¸Þ¼Òµå´Â ¹è¿­À» µ¹·ÁÁÖ¾î, ±× Áß¿¡´Â Å×ÀÌºí¿¡ ´ëÇÑ Á¤º¸, Ä÷³À̳ª ÁÖŰ, ±× ¿ÜÀÇ ¸ÞŸµ¥ÀÌŸ°¡ Æ÷ÇԵ˴ϴÙ.

·Ê 10.99. Å×À̺í¸íÀ» ÃëµæÇÏ´Â ¿¹


<?php

$table 
= new Bugs();

$info $table->info();

echo 
"Å×À̺í¸íÀº " $info['name'] . " ÀÔ´Ï´Ùn";

info() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â ¹è¿­ÀÇ Å°¿¡ ´ëÇØ¼­, ÀÌÇÏ¿¡ Á¤¸®ÇÕ´Ï´Ù.

  • name => Å×À̺íÀÇ À̸§.

  • cols => Å×À̺íÀÇ Ä÷³¸íÀ» ³ªÅ¸³»´Â ¹è¿­.

  • primary => ÁÖŰÀÇ Ä÷³¸íÀ» ³ªÅ¸³»´Â ¹è¿­.

  • metadata => Ä÷³¸í°ú Ä÷³¿¡ °üÇÑ Á¤º¸¸¦ °ü·ÃÁöÀº ¿¬»ó ¹è¿­. À̰ÍÀº describeTable() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â Á¤º¸ÀÔ´Ï´Ù.

  • rowClass => ÀÌ Å×À̺í ÀνºÅϽºÀÇ ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â Çà ¿ÀºêÁ§Æ®·Î »ç¿ëÇÑ´Ù ±¸»ó Ŭ·¡½º¸í.µðÆúÆ®´Â Zend_Db_Table_Row ÀÔ´Ï´Ù.

  • rowsetClass => ÀÌ Å×À̺í ÀνºÅϽºÀÇ ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â Çà ¼¼Æ® ¿ÀºêÁ§Æ®·Î »ç¿ëÇÑ´Ù ±¸»ó Ŭ·¡½º¸í.µðÆúÆ®´Â Zend_Db_Table_Rowset ÀÔ´Ï´Ù.

  • referenceMap => ÀÌ Å×ÀÌºí¿¡¼­ ÀÓÀÇÀÇ Ä£Å×ÀÌºí¿¡ ´ëÇÑ ÂüÁ¶ÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ ¿¬»ó ¹è¿­. Ç×10.8.2. ¡¸¸±·¹À̼ÇÀÇ Á¤ÀÇ¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

  • dependentTables => ÀÌ Å×À̺íÀ» ÂüÁ¶Çϰí ÀÖ´Â Å×À̺íÀÇ Å¬·¡½º¸íÀÇ ¹è¿­. Ç×10.8.2. ¡¸¸±·¹À̼ÇÀÇ Á¤ÀÇ¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

  • schema => Å×À̺íÀÇ schema (ȤÀº µ¥ÀÌŸº£À̽º, ȤÀº °Ñ(Ç¥) ¿µ¿ª) ÀÇ À̸§.

10.5.11. Å×À̺íÀÇ ¸ÞŸµ¥ÀÌŸÀÇ Ä³½¬

µðÆúÆ®¿¡¼­´Â Zend_Db_Table_Abstract ÀÇ ¹®ÀÇó´Â Å×ÀÌºí ¿ÀºêÁ§Æ®ÀÇ ÀνºÅϽºÀÇ Å×À̺긣¸ÞŸµ¥ÀÌŸ ÇÏÁö¸¸ °¡¸®Å°´Â µ¥ÀÌŸº£À̽º°¡ µË´Ï´Ù. Áï, Å×ÀÌºí ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÒ ¶§¿¡ µðÆúÆ®·Î Çà ±ý ¼ö ÀÖ´Â (ÀÏ)°ÍÀº, ¾î´ðÅÍÀÇ describeTable() ¸Þ¼Òµå¿¡ ÀÇÇØ¼­ µ¥ÀÌŸº£À̽º·ÎºÎÅÍ Å×À̺íÀÇ ¸ÞŸµ¥ÀÌŸ¸¦ ÃëµæÇÏ´Â °ÍÀÌ µË´Ï´Ù.

µ¿ÀÏÇÑ Å×ÀÌºí¿¡ ´ëÇØ¼­ º¹¼öÀÇ Å×ÀÌºí ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÏ´Â °æ¿ì µî¿¡, ¸Åȸ Å×ÀÌºí ¸¶½Ç ¼ö ÀÖ¾ú´ø µ¥ÀÌÅ͸¦ µ¥ÀÌŸº£À̽º¿¡ ¹®ÀÇÇÏ´Â °ÍÀº ÆÛÆ÷¸Õ½ºÀÇ °üÁ¡À¸·ÎºÎÅ͵µ ¹Ù¶÷Á÷ÇÏÁö´Â ¾Ê½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì¸¦ À§Çؼ­, µ¥ÀÌŸº£À̽º·ÎºÎÅÍ ÃëµæÇÑ Å×À̺긣¸ÞŸµ¥ÀÌŸ¸¦ ij½¬ÇØ µÑ ¼ö ÀÖ½À´Ï´Ù.

Å×À̺íÀÇ ¸ÞŸµ¥ÀÌŸ¸¦ ij½¬ÇÏ´Â ÁÖµÈ ¹æ¹ýÀº, ´ÙÀ½ÀÇ µÑÀÔ´Ï´Ù.

  • Zend_Db_Table_Abstract::setDefaultMetadataCache() (À»)¸¦ ÄÝ ÇÑ´Ù - À̰ÍÀº, ¸ðµç Å×À̺í Ŭ·¡½º¿¡¼­ »ç¿ëÇÏ´Â µðÆúÆ®ÀÇ Ä³½¬ ¿ÀºêÁ§Æ®¸¦ ÇÑ ¹ø¿¡ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  • Zend_Db_Table_Abstract::__construct() (À»)¸¦ ¼³Á¤ÇÑ´Ù - À̰ÍÀº, ƯÁ¤ÀÇ Å×À̺í Ŭ·¡½ºÀÇ ÀνºÅϽº·Îh»ç¿ëÇϴ ij½¬ ¿ÀºêÁ§Æ®¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¾î´À ÂÊÀÇ °æ¿ì¿¡ ´ëÇØµµ, ¸Þ¼ÒµåÀÇ Àμö´Â Çϳª·Î,null (ij½¬¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù) ȤÀº Zend_Cache_Core ÀÇ ÀνºÅϽº¸¦ ÁöÁ¤ÇÕ´Ï´Ù.À̰͵éÀ» Á¶ÇÕÇÏ´Â °ÍÀ¸·Î, µðÆúÆ®ÀÇ ¸ÞŸµ¥ÀÌŸij½´¸¦ ÁöÁ¤ÇÑ ´ÙÀ½ ƯÁ¤ÀÇ Å×ÀÌºí ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ ºÁ ´Ù¸¥ ij½¬¸¦ »ç¿ë½Ãų ¼ö ÀÖ½À´Ï´Ù.

·Ê 10.100. ¸ðµç Å×ÀÌºí ¿ÀºêÁ§Æ®·ÎÀÇ µðÆúÆ®ÀÇ ¸ÞŸµ¥ÀÌŸij½´ÀÇ »ç¿ë

´ÙÀ½ÀÇ ÄÚµå´Â, µðÆúÆ®ÀÇ ¸ÞŸµ¥ÀÌŸij½´¸¦ ¸ðµç Å×ÀÌºí ¿ÀºêÁ§Æ®·Î »ç¿ëÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù.


<?php

// ¿ì¼± ij½¬¸¦ ÀÛ¼ºÇÕ´Ï´Ù

require_once 'Zend/Cache.php';

$frontendOptions = array(
    
'automatic_serialization' => true
    
);

$backendOptions  = array(
    
'cacheDir'                => 'cacheDir'
    
);

$cache Zend_Cache::factory('Core''File'$frontendOptions$backendOptions);


// ´ÙÀ½¿¡, ±×°ÍÀ» ¸ðµç Å×ÀÌºí ¿ÀºêÁ§Æ®·Î »ç¿ëÇϵµ·Ï(µíÀÌ) ¼³Á¤ÇÕ´Ï´Ù

require_once 'Zend/Db/Table/Abstract.php';

Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);


// Å×À̺í Ŭ·¡½ºµµ ÇÊ¿äÇÕ´Ï´Ù

class Bugs extends Zend_Db_Table_Abstract
{
    
// ...
}


// Bugs ÀÇ °¢ ÀνºÅϽº´Â, À̰ÍÀ¸·Î µðÆúÆ®ÀÇ ¸ÞŸµ¥ÀÌŸij½´¸¦ ÀÌ¿ëÇÏ°Ô µË´Ï´Ù

$bugs = new Bugs();

·Ê 10.101. ƯÁ¤ÀÇ Å×ÀÌºí ¿ÀºêÁ§Æ®·ÎÀÇ ¸ÞŸµ¥ÀÌŸij½´ÀÇ »ç¿ë

´ÙÀ½ÀÇ ÄÚµå´Â, ¸ÞŸµ¥ÀÌŸij½´¸¦ ƯÁ¤ÀÇ Å×ÀÌºí ¿ÀºêÁ§Æ®·Î ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù.


<?php

// ¿ì¼± ij½¬¸¦ ÀÛ¼ºÇÕ´Ï´Ù

require_once 'Zend/Cache.php';

$frontendOptions = array(
    
'automatic_serialization' => true
    
);

$backendOptions  = array(
    
'cacheDir'                => 'cacheDir'
    
);

$cache Zend_Cache::factory('Core''File'$frontendOptions$backendOptions);


// Å×À̺í Ŭ·¡½ºµµ ÇÊ¿äÇÕ´Ï´Ù

require_once 'Zend/Db/Table/Abstract.php';

class 
Bugs extends Zend_Db_Table_Abstract
{
    
// ...
}


// ÀνºÅϽº¸¦ ¼³Á¤ÇÕ´Ï´Ù

$bugs = new Bugs(array('metadataCache' => $cache));

[ÁÖÀÇ] ij½¬ÀÇ ÇÁ·ÐÆ®¿£µå¿¡ À־ÀÇ ÀÚµ¿ ½Ã¸®¾Æ¶óÀÌÁî

¾î´ðÅÍÀÇ describeTable() ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â ³»¿ëÀº ¹è¿­À̹ǷÎ, Zend_Cache_Core ÇÁ·ÐÆ®¿£µåÀÇ ¿É¼Ç automatic_serialization ÇÏ true (¿Í)°ú ¼³Á¤ÇսôÙ.

À§ÀÇ ¿¹¿¡¼­´Â Zend_Cache_Backend_File (À»)¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù¸¸, »óȲ¿¡ µû¶ó ÀûÀýÇÑ ¿¬±¸ ÃÖÁ¾ ´Ü°è¸¦ ±¸»çÇÒ ¼ö ÀÖ½À´Ï´Ù.»ó¼¼ÇÑ Á¤º¸´Â Zend_Cache (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

10.5.12. Å×À̺í Ŭ·¡½ºÀÇ Ä¿½ºÅ͸¶ÀÌÁî ¹× È®Àå

10.5.12.1. µ¶ÀÚÀûÀÎ Çà Ŭ·¡½º ȤÀº Çà ¼¼Æ® Ŭ·¡½ºÀÇ »ç¿ë

µðÆúÆ®¿¡¼­´Â, Å×À̺í Ŭ·¡½º°¡ µ¹·ÁÁÖ´Â Çà ¼¼Æ®´Â ±¸»ó Ŭ·¡½º Zend_Db_Table_Rowset ÀÇ ÀνºÅϽºÀ̸ç, Çà ¼¼Æ®¿¡´Â ±¸»ó Ŭ·¡½º Zend_Db_Table_Row ÀÇ ÀνºÅϽºÀÇ ÁýÇÕÀÌ Æ÷ÇԵ˴ϴÙ. ÀÌ·¯ÇÑ ¸ÓÁö¾Ê¾Æ¿¡ ´ëÇØ¼­µµ, ´Ù¸¥ Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. ±×·¯³ª, »ç¿ëÇϴ Ŭ·¡½º´Â °¢°¢ Zend_Db_Table_Rowset_Abstract ¹× Zend_Db_Table_Row_Abstract (À»)¸¦ °è½ÂÇÑ °ÍÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù.

Çà Ŭ·¡½º ¹× Çà ¼¼Æ® Ŭ·¡½º¸¦ ÁöÁ¤ÇÏ·Á¸é , Å×À̺íÀÇ constructor¡¡ ¡¡ ÀÇ ¿É¼Ç ¹è¿­À» »ç¿ëÇÕ´Ï´Ù. ´ëÀÀÇϴ Ű´Â, °¢°¢ 'rowClass' ¹× 'rowsetClass' µË´Ï´Ù. ¿©±â¿¡´Â, Ŭ·¡½ºÀÇ À̸§À» ¹®ÀÚ¿­·Î ÁöÁ¤ÇÕ´Ï´Ù.

·Ê 10.102. Çà Ŭ·¡½º ¹× Çà ¼¼Æ® Ŭ·¡½ºÀÇ ÁöÁ¤ÀÇ ¿¹


<?php

class My_Row extends Zend_Db_Table_Row_Abstract
{
    ...
}

class 
My_Rowset extends Zend_Db_Table_Rowset_Abstract
{
    ...
}

$table = new Bugs(
    array(
        
'rowClass'    => 'My_Row',
        
'rowsetClass' => 'My_Rowset'
    
)
);

$where $table->getAdapter()->quoteInto('bug_status = ?''NEW')

// My_Rowset ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
// ±× Áß¿¡´Â My_Row ÇüÅÂÀÇ ¿ÀºêÁ§Æ®ÀÇ ¹è¿­ÀÌ Æ÷ÇԵ˴ϴÙ.
$rows $table->fetchAll($where);

Ŭ·¡½º¸¦ º¯°æÇÏ·Á¸é ,setRowClass() ¸Þ¼Òµå ¹× setRowsetClass() ¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù. À̰ÍÀº, ±× ÀÌÈÄ¿¡ ÀÛ¼ºµÇ´Â Çà ¹× Çà ¼¼Æ®¿¡ Àû¿ëµË´Ï´Ù. ¹ú½á ¿Ï¼ºµÇ°í ÀÖ´Â Çà ¿ÀºêÁ§Æ®³ª Çà ¼¼Æ® ¿ÀºêÁ§Æ®¿¡´Â ¾î¶² ¿µÇâµµ ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù.

·Ê 10.103. Çà Ŭ·¡½º ¹× Çà ¼¼Æ® Ŭ·¡½ºÀÇ º¯°æÀÇ ¿¹


<?php

$table 
= new Bugs();

$where $table->getAdapter()->quoteInto('bug_status = ?''NEW')

// Zend_Db_Table_Rowset ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
// ±× Áß¿¡´Â Zend_Db_Table_Row ÇüÅÂÀÇ ¿ÀºêÁ§Æ®ÀÇ ¹è¿­ÀÌ Æ÷ÇԵ˴ϴÙ.
$rowsStandard $table->fetchAll($where);

$table->setRowClass('My_Row');
$table->setRowsetClass('My_Rowset');

// My_Rowset ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
// ±× Áß¿¡´Â My_Row ÇüÅÂÀÇ ¿ÀºêÁ§Æ®ÀÇ ¹è¿­ÀÌ Æ÷ÇԵ˴ϴÙ.
$rowsCustom $table->fetchAll($where);

// $rowsStandard ¿ÀºêÁ§Æ®´Â ¾ÆÁ÷ Á¸ÀçÇÕ´Ï´Ù¸¸, ¾Æ¹«°Íµµ º¯°æµÇ°í ÀÖÁö ¾Ê½À´Ï´Ù

Çà Ŭ·¡½º ¹× Çà ¼¼Æ® Ŭ·¡½º¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ °ÍÀº Ç×10.6. ¡¸Zend_Db_Table_Row¡¹ ¹× Ç×10.7. ¡¸Zend_Db_Table_Rowset¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

10.5.12.2. Insert,Update ¹× Delete ½Ã°£ÀÇ µ¶ÀÚ ³í¸®ÀÇ Á¤ÀÇ

Å×À̺í Ŭ·¡½ºÀÇ insert() ¸Þ¼Òµå³ª update() ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, µ¥ÀÌŸº£À̽º Á¶ÀÛ Àü¿¡ ½ÇÇàµÇ´Â µ¶ÀÚÀûÀÎ Äڵ带 ½ÇÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸·¿¡ ģŬ·¡½ºÀÇ ¸Þ¼Òµå¸¦ ÄÝ ÇÏ´Â °ÍÀ» ÀØÁö ¾Êµµ·Ï ÇսôÙ.

·Ê 10.104. ŸÀÓ ½ºÅÆÇÁ¸¦ ó¸®ÇÏ´Â µ¶ÀÚ ³í¸®


<?php

class Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_name 'bugs';

    public function 
insert(array $data)
    {
        
// Å¸ÀÓ ½ºÅÆÇÁ¸¦ Ãß°¡ÇÕ´Ï´Ù
        
if (empty($data['created_on'])) {
            
$data['created_on'] = time();
        }
        return 
parent::insert($data);
    }

    public function 
update(array $data$where)
    {
        
// Å¸ÀÓ ½ºÅÆÇÁ¸¦ Ãß°¡ÇÕ´Ï´Ù
        
if (empty($data['updated_on'])) {
            
$data['updated_on'] = time();
        }
        return 
parent::update($data$where);
    }
}

delete() ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

10.5.12.3. Zend_Db_Table ¿¡ À־ÀÇ µ¶ÀÚÀûÀÎ °Ë»ö ¸Þ¼ÒµåÀÇ Á¤ÀÇ

¸¸¾à ƯÁ¤ÀÇ Á¶°Ç¿¡ ÀÇÇÑ Å×À̺íÀÇ °Ë»öÀ» ºó¹øÈ÷ ½Ç½ÃÇÑ´Ù¸é, µ¶ÀÚÀûÀÎ °Ë»ö ¸Þ¼Òµå¸¦ Å×À̺í Ŭ·¡½º¿¡¼­ ½ÇÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ ¹®ÀÇ´Â fetchAll() (À»)¸¦ ÀÌ¿ëÇÏ°í ¾µ ¼ö ÀÖ½À´Ï´Ù¸¸, ¾îÇø®ÄÉÀ̼dz»ÀÇ º¹¼öÀÇ °³¼Ò¿¡¼­ Äõ¸®¸¦ ½ÇÇàÇÏ´Â °æ¿ì¿¡´Â ¹®ÀÇ Á¶°ÇÀ» ÁöÁ¤ÇÏ´Â Äڵ尡 Áߺ¹ ÇØ ¹ö¸³´Ï´Ù. ±×·± °æ¿ì´Â, Å×À̺í Ŭ·¡½º¿¡¼­ ¸Þ¼Òµå¸¦ ½ÇÀåÇØ, Àß »ç¿ëÇÏ´Â ¹®ÀǸ¦ Á¤ÀÇÇØ µÎ´Â ÆíÀÌ Æí¸®ÇÕ´Ï´Ù.

·Ê 10.105. »óȲÀ» ÁöÁ¤ÇØ ¹ö±×¸¦ °Ë»öÇÏ´Â µ¶ÀÚ ¸Þ¼Òµå


<?php

class Bugs extends Zend_Db_Table_Abstract
{
    protected 
$_name 'bugs';

    public function 
findByStatus($status)
    {
        
$where $this->getAdapter()->quoteInto('bug_status = ?'$status);
        return 
$this->fetchAll($where'bug_id');
    }
}

10.5.12.4. Zend_Db_Table ¿¡ À־ÀÇ ¾î¹Ì º¯È­ÀÇ Á¤ÀÇ

Å×À̺íÀÇ Å¬·¡½º¸íÀ» RDBMS ÀÇ Å×À̺í¸íÀ¸·Î ´ë¸é½Ã۱â À§Çؼ­, inflection (¾î¹Ì º¯È­) (À¸)·Î ºÒ¸®´Â ¹®ÀÚ¿­ º¯È¯À» »ç¿ëÇÏ´Â °ÍÀ» ÁÁ¾ÆÇÏ´Â ºÐµµ ÀÖ½À´Ï´Ù.

¿¹¸¦ µé¾î, Å×À̺íÀÇ Å¬·¡½º¸íÀÌ "BugsProducts" (ÀÌ)¶ó°í Çϸé, Ŭ·¡½ºÀÇ ÇÁ·ÓÆÛƼ $_name (À»)¸¦ ¸í½ÃÀûÀ¸·Î ¼±¾ðÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â µ¥ÀÌŸº£À̽º³»ÀÇ ¹°¸®ÀûÀÎ Å×À̺í "bugs_products" ¿¡ ¸ÅÄ¡ÇÕ´Ï´Ù.ÀÌ °ü·ÃÁö¾î¿¡¼­´Â, "CamelCase" Çü½ÄÀÇ Å¬·¡½º¸íÀÌ ¼Ò¹®ÀÚ¿¡ º¯È¯µÇ¾î ´Ü¾îÀÇ ´Ü¶ôÀÌ ¾ð´õ ½ºÄھƷΠ¹Ù²ò´Ï´Ù.

µ¥ÀÌŸº£À̽ºÀÇ Å×À̺í¸íÀ», Ŭ·¡½º¸í°ú´Â µ¶¸³ÇÑ °ÍÀ¸·Î ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ±× °æ¿ì´Â, Å×À̺í Ŭ·¡½ºÀÇ ÇÁ·ÓÆÛƼ $_name ¿¡, ±× Ŭ·¡½º¸íÀ» ÁöÁ¤ÇÕ´Ï´Ù.

Zend_Db_Table_Abstract (Àº)´Â, Ŭ·¡½º¸í°ú Å×À̺í¸íÀ» °ü·ÃÁþ±â À§ÇÑ ¾î¹Ì º¯È­´Â ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù. Å×À̺í Ŭ·¡½º¿¡¼­ $_name ÀÇ ¼±¾ðÀ» »ý·« Çϸé, ±× Ŭ·¡½º¸í¿¡ Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÏ´Â À̸§ÀÇ Å×À̺í°ú °ü·ÃÁöÀ» ¼ö ÀÖ½À´Ï´Ù.

µ¥ÀÌŸº£À̽ºÀÇ ½Äº°ÀÚ¸¦ º¯È¯ÇÏ´Â °ÍÀº, ÀûÀýÇÏÁö´Â ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé, ±×°ÍÀº ºÒ¸íÈ®ÇÑ »óŸ¦ ÀÏÀ¸ÄÑ, ½Ã°£¿¡´Â ½Äº°ÀÚ¿¡ ¾×¼¼½º ÇÒ ¼ö ¾ø°Ô µÇ¾î ¹ö¸®±â ¶§¹®ÀÔ´Ï´Ù. SQL ÀÇ ½Äº°ÀÚ¸¦ µ¥ÀÌŸº£À̽º³»¿¡ ÀÖ´Â ±×´ë·ÎÀÇ Çü½Ä¿¡¼­ Ãë±ÞÇÏ´Â °ÍÀ¸·Î, Zend_Db_Table_Abstract (Àº)´Â ½ÉÇÃÇϰí À¯¿¬ÇÑ °ÍÀÌ µÇ¾î ÀÖ½À´Ï´Ù.

¾î¹Ì º¯È­¸¦ ½Ç½ÃÇÏ°í ½ÍÀº °æ¿ì´Â, ±× º¯È¯À» µ¶ÀÚÀûÀ¸·Î ½ÇÀåÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.±×·¯±â À§Çؼ­´Â Å×À̺í Ŭ·¡½º¿¡¼­ _setupTableName() ¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÕ´Ï´Ù. À̰ÍÀ» ½Ç½ÃÇÏ´Â ÇϳªÀÇ ¹æ¹ýÀ¸·Î¼­´Â,Zend_Db_Table_Abstract (À»)¸¦ °è½ÂÇÑ Ãß»ó Ŭ·¡½º¸¦ ÀÛ¼ºÇØ, ÇÑÃþ ´õ ±×°ÍÀ» °è½ÂÇÑ Å×À̺í Ŭ·¡½º¸¦ ÀÛ¼ºÇÑ´Ù°í ÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.

·Ê 10.106. ¾î¹Ì º¯È­¸¦ ½ÇÀåÇÑ Ãß»ó Å×À̺í Ŭ·¡½ºÀÇ ¿¹


<?php

abstract class MyAbstractTable extends Zend_Db_Table_Abstract
{
    protected function 
_setupTableName()
    {
        if (!
$this->_name) {
            
$this->_name myCustomInflector(get_class($this));
        }
        
parent::_setupTableName();
    }
}

class 
BugsProducts extends MyAbstractTable
{
}

¾î¹Ì º¯È­¸¦ ½Ç½ÃÇÏ´Â ÇÔ¼ö¸¦ ¾²´Â °ÍÀº ´ç½ÅÀÇ ¿ªÇÒÀÔ´Ï´Ù. Zend Framework ¿¡´Â ±×·¯ÇÑ ÇÔ¼ö´Â ¾ø½À´Ï´Ù.