Zend_Db_Table Ŭ·¡½º´Â, µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡ÀÇ °´Ã¼ ÁöÇâÀÇ ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. Å×ÀÌºí¿¡ ´ëÇÑ ´Ù¾çÇÑ °øÅë Á¶ÀÛÀ» À§ÇÑ ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù. base class´Â È®Àå °¡´ÉÇØ¼, µ¶ÀÚÀûÀÎ ³í¸®¸¦ Â¥³ÖÀ» ¼öµµ ÀÖ½À´Ï´Ù.
Zend_Db_Table (Àº)´Â, Å×ÀÌºí µ¥ÀÌÅÍ °ÔÀÌÆ®¿þÀÌ ÆÐÅÏÀ» ½ÇÀåÇÑ °ÍÀÔ´Ï´Ù.¶Ç, ±× ¿Ü¿¡µµ Çà µ¥ÀÌÅÍ °ÔÀÌÆ®¿þÀÌ ÆÐÅÏÀ» ½ÇÀåÇÑ Å¬·¡½ºµµ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.
µ¥ÀÌŸº£À̽º³»¿¡¼ ¾×¼¼½º ÇÏ°í ½ÍÀº Å×ÀÌºí °¢°¢ ºÙ°í, Zend_Db_Table_Abstract (À»)¸¦ °è½ÂÇÑ Å¬·¡½º¸¦ Á¤ÀÇÇÕ´Ï´Ù.
±× Ŭ·¡½º°¡ Á¤ÀÇÇϰí ÀÖ´Â µ¥ÀÌŸº£À̽ºÀÇ Å×À̺íÀ» Á¤ÀÇÇÏ·Á¸é ,
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°¡ µË´Ï´Ù.
¸ðµç Å×À̺íÀº ÁÖ۸¦ °¡ÁöÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
ÁÖŰ Ä÷³À» ¼±¾ðÇÏ·Á¸é ,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¡¡ ¡¡ ÀÇ Àμö,
ȤÀº |
Å×À̺í Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¶§¿¡, 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) Çϸé, ÁÖŰ Ä÷³À» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Å×À̺í Ŭ·¡½ºÀÇ ÀÛ¼º½Ã¿¡ ¾îÇø®ÄÉÀÌ¼Ç °íÀ¯ÀÇ ³í¸®¸¦ ÃʱâÈÇÏ°í ½ÍÀº °æ¿ì´Â,
±× ÀÛ¾÷À» init()
¸Þ¼Òµå·Î ½Ç½ÃÇÕ´Ï´Ù.
À̰ÍÀº, Å×À̺íÀÇ ¸ÞŸµ¥ÀÌŸ°¡ ¸ðµÎ ó¸®µÈ ÈÄ¿¡ ÄÝ µË´Ï´Ù.
¸ÞŸµ¥ÀÌŸ¸¦ º¯°æÇÒ »ý°¢ÀÌ ¾ø´Ù¸é,__construct
¸Þ¼Òµåº¸´Ù ÀÌÂÊÀ» »ç¿ëÇÏ´Â °ÍÀ» Ãßõ ÇÕ´Ï´Ù.
·Ê 10.77. init() ¸Þ¼ÒµåÀÇ »ç¿ë¿¹
<?php
class Bugs extends Zend_Db_Table_Abstract
{
protected $_observer;
protected function init()
{
$this->_observer = new MyObserverClass();
}
}
Å×À̺í Ŭ·¡½º¸¦ »ç¿ëÇϱâ Àü¿¡, constructor¡¡ ¡¡ À¸·Î ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù. constructor¡¡ ¡¡ ÀÇ Àμö´Â ¿É¼ÇÀÇ ¹è¿ÀÌ µË´Ï´Ù. Å×À̺íÀÇ constructor¡¡ ¡¡ ÀÇ ¿É¼Ç °¡¿îµ¥, °¡Àå Áß¿äÇÑ °ÍÀº µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ ÀνºÅϽº°¡ µË´Ï´Ù. À̰ÍÀº RDBMS ¿¡ÀÇ À¯È¿ÇÑ Á¢¼ÓÀ» ³ªÅ¸³À´Ï´Ù. µ¥ÀÌŸº£À̽º ¾î´ðÅ͸¦ Å×À̺í Ŭ·¡½º·Î ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº 3°Å¸®ÀÖ½À´Ï´Ù. °¢°¢ ºÙ°í, ÀÌÇÏ·Î ¼³¸íÇÕ´Ï´Ù.
µ¥ÀÌŸº£À̽º ¾î´ðÅ͸¦ Å×À̺í Ŭ·¡½º·Î ÁöÁ¤ÇÏ´Â ÃÖÃÊÀÇ ¹æ¹ýÀº,
Zend_Db_Adapter_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ ¿É¼ÇÀÇ ¹è¿·Î °Ç³×ÁÖ´Â °ÍÀÔ´Ï´Ù.
¹è¿ÀÇ Å°´Â 'db'
µË´Ï´Ù.
·Ê 10.78. ¾î´ðÅÍ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÑ, Å×À̺íÀÇ ÀÛ¼ºÀÇ ¿¹
<?php
$db = Zend_Db::factory('PDO_MYSQL', $options);
$table = new Bugs(array('db' => $db));
µ¥ÀÌŸº£À̽º ¾î´ðÅ͸¦ Å×À̺í Ŭ·¡½º·Î ÁöÁ¤ÇÏ´Â µÎ¹øÂ°ÀÇ ¹æ¹ýÀº,
µðÆúÆ®ÀÇ µ¥ÀÌŸº£À̽º ¾î´ðÅͷμ 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();
À̰ÍÀº, ¿¹¸¦ µé¾î ±âµ¿ ÆÄÀϵ¼ µ¥ÀÌŸº£À̽º ¾î´ðÅÍ ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇØ, ±×°ÍÀ» µðÆúÆ®ÀÇ ¾î´ðÅͷμ º¸Á¸ÇØ µÎ´Â °æ¿ì µî¿¡ Æí¸®ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ¾îÇø®ÄÉÀÌ¼Ç Àüü·Î °øÅëÀÇ ¾î´ðÅ͸¦ »ç¿ëÇÏ´Â °ÍÀÌ º¸ÁõµË´Ï´Ù. ±×·¯³ª, µðÆúÆ®ÀÇ ¾î´ðÅÍÀÇ ÀνºÅϽº´Â, Çϳª ¹Û¿¡ ¼³Á¤ÇÒ ¼ö ¾ø½À´Ï´Ù.
µ¥ÀÌŸº£À̽º ¾î´ðÅ͸¦ Å×À̺í Ŭ·¡½º·Î ÁöÁ¤ÇÏ´Â 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 (ÀÌ)³ª µ¥ÀÌŸº£À̽º ÀνºÅϽº¿¡ °íÀ¯ÀÇ °ÍÀÌ µË´Ï´Ù. º¹¼öÀÇ µ¥ÀÌŸº£À̽º¿¡ ¾×¼¼½º ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì´Â, º¹¼öÀÇ ¾î´ðÅͰ¡ ÇÊ¿äÇÕ´Ï´Ù.
Å×ÀÌºí ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇϰí, ±× ¿ÀºêÁ§Æ®ÀÇ ¹ÙÅÁÀ¸·Î µÇ¾î ÀÖ´Â Å×ÀÌºí¿¡
ÇàÀ» »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù.±×·¯±â À§Çؼ´Â, Å×ÀÌºí ¿ÀºêÁ§Æ®ÀÇ
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 ÀÇ µðÆúÆ®ÀÇ °Åµ¿ÀÔ´Ï´Ù¸¸, ±× ÀÌ¿ÜÀÇ Çü½ÄÀÇ ÁÖ۵µ Ãë±ÞÇÒ ¼ö ÀÖ½À´Ï´Ù.ÀÌÇÏÀÇ ¸¶µð¿¡¼´Â, ´Ù¾çÇÑ Çü½ÄÀÇ ÁÖ۸¦ Ãë±ÞÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.
ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(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)¸¦ À¯È¿ÇÏ°Ô ÇØ ÁÖ¼¼¿ä.
¼ø¼¿Í´Â µ¥ÀÌŸº£À̽ºÀÇ ¿ÀºêÁ§Æ®ÀÇ ÀÏÁ¾À¸·Î, ÀÏÀÇÀÎ °ªÀ» »ý¼ºÇÏ´Â °ÍÀÔ´Ï´Ù.À̰ÍÀ», Çϳª ȤÀº º¹¼öÀÇ Å×À̺íÀÇ ÁÖŰÀÇ °ªÀ¸·Î ÇØ¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
$_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) ŰÀÇ Ä÷³À» »ç¿ëÇϵµ·Ï(µíÀÌ) ÇÕ´Ï´Ù. ¼ø¼ÀÇ Å°ÀÇ ´ÙÀ½ÀÇ °ªÀ» ÃëµæÇÏ´Â ÀÏÀÌ ÀÖ´Â °æ¿ì¿¡°Ô¸¸ ¼ø¼¸íÀ» ¹®ÀÚ¿·Î Á¤ÀÇÇÕ´Ï´Ù.
ÀÚ¿¬ ۸¦ °¡Áö´Â Å×ÀÌºíµµ ÀÖ½À´Ï´Ù.ÀÚ¿¬ ۶õ, Å×À̺íÀ̳ª ¼ø¼¿¡ ÀÇÇØ¼ ÀÚµ¿ »ý¼ºµÇ´Â °Í ÀÌ¿ÜÀÇ Å°¶ó°í ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ °æ¿ì´Â, ÁÖŰÀÇ °ªÀ» ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
$_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 ÇÏÁö¸¸ ¼Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù. ÀÚ¿¬ ۸¦ »ç¿ëÇÏ´Â Å×À̺íÀÇ ¿¹·Î¼´Â, ·è¾÷Å×À̺íÀ̳ª ´Ù´ë ´Ù¸±·¹À̼ÇÀÇ Áß°£ Å×À̺í, ±×¸®°í º¹ÇÕÁÖ۸¦ °¡Áö´Â ´ëºÎºÐÀÇ Å×À̺íµîÀÌ ÀÖ½À´Ï´Ù. |
µ¥ÀÌŸº£À̽ºÀÇ Å×À̺íÀÇ ÇàÀ» °»½ÅÇÏ·Á¸é , Å×À̺í Ŭ·¡½ºÀÇ
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 ½Ä¾ÈÀÇ °ªÀ̳ª ½Äº°ÀÚ´Â, ÀÚµ¿ÀûÀ¸·Î´Â ÄíÆ® µÇÁö ¾Ê½À´Ï´Ù.
ÄíÆ®°¡ ÇÊ¿äÇÑ °ªÀ̳ª ½Äº°ÀÚ¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â, ½º½º·Î ÄíÆ® ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ |
µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡¼ ÇàÀ» »èÁ¦ÇÏ·Á¸é , Å×À̺í Ŭ·¡½ºÀÇ
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 ½Ä¾ÈÀÇ °ªÀ̳ª ½Äº°ÀÚ´Â, ÀÚµ¿ÀûÀ¸·Î´Â ÄíÆ® µÇÁö ¾Ê½À´Ï´Ù.
ÄíÆ®°¡ ÇÊ¿äÇÑ °ªÀ̳ª ½Äº°ÀÚ¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â, ½º½º·Î ÄíÆ® ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ |
µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡ ´ëÇØ¼, ÁöÁ¤ÇÑ ÁÖŰÀÇ °ª¿¡ ´ëÀÀÇÏ´Â ÇàÀ» ¹®ÀÇÇÏ·Á¸é
find()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ ÃÖÃÊÀÇ Àμö´Â, Å×À̺íÀÇ ÁÖŰ¿¡ ´ëÀÀÇÑ´Ù
´ÜÀÏÀÇ °ªÀΰ¡, ȤÀº º¹¼öÀÇ °ªÀÇ ¹è¿ÀÌ µË´Ï´Ù.
·Ê 10.88. ÁÖŰÀÇ °ª¿¡ ÀÇÇØ¼ ÇàÀ» ã´Â ¿¹
<?php
$table = new Bugs();
// ´ÜÀÏÀÇ ÇàÀ» ã¾Æ,
// Rowset (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù
$rows = $table->find(1234);
// º¹¼öÀÇ ÇàÀ» ã¾Æ,
// ÀÌÂʵµ Rowset (À»)¸¦ µ¹·ÁÁÝ´Ï´Ù
$rows = $table->find(array(1234, 5678));
´ÜÀÏÀÇ °ªÀ» ÁöÁ¤ÇßÀ» °æ¿ì´Â, ÀÌ ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â Çà¼ö´Â ÃÖ´ë¿¡¼µµ ÀÏÇàÀÌ µË´Ï´Ù. ÁÖŰÀÇ °ªÀÌ Áߺ¹ ÇÒ °ÍÀº ¾ø±â ¶§¹®¿¡, ÁöÁ¤ÇÑ °ª¿¡ ´ëÀÀÇÏ´Â ÇàÀº Å×ÀÌºí³»¿¡¼ ÃÖ´ë¿¡¼µµ ÀÏÇุÀ̱⠶§¹®ÀÔ´Ï´Ù. º¹¼öÀÇ °ªÀ» ¹è¿·Î ÁöÁ¤ÇßÀ» °æ¿ì´Â, ÀÌ ¸Þ¼Òµå°¡ µ¹·ÁÁÖ´Â °á°úÀÇ ÃÖ´ë¼ö´Â ¹è¿·Î ÁöÁ¤ÇÑ °ªÀÇ ¼ö°¡ µË´Ï´Ù.
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(1234, 5678), array('ABC', 'DEF'));
![]() |
°æ°í |
---|---|
Ãëµæ Á¶ÀÛ¿ëÀÇ API (Àº)´Â º¯°æµÇ¾î
´ÙÀ½ÀÇ ¹®ÀåÀº, ¸ðµÎ ¿Ã¹ß¶ó °°Àº µ¿ÀÛÀ» ÇÕ´Ï´Ù. ±×·¯³ª, »õ·Î¿î »ç¿ë¹ýÀ¸·Î ´ëÀÀÇϱâ À§Çؼµµ °¡´ÉÇÑ ÇÑ »õ·Î¿î ¾²´Â ¹ýÀ¸·Î º¯°æÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù.
|
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'));
ÁÖŰÀÇ °ª Àܸ̿¦ Á¶°ÇÀ¸·Î¼ Ç༼Ʈ¸¦ ¹®ÀÇÇÏ·Á¸é ,
Å×À̺í Ŭ·¡½ºÀÇ 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 ±¸¿¡ ¸ÅÄ¡ÇÏ´Â ¸ðµç ÇàÀ» ÃëµæÇÏ°Ô µË´Ï´Ù.
¸®Äù½ºÆ®ÀÇ ³»¿ëÀ» º¸´Ù ¸íÈ®ÇÏ°Ô ÁöÁ¤ÇØ ÃÖÀûÈÇϱâ À§Çؼ, Çà/Çà ¼¼Æ®°¡ µ¹·ÁÁÖ´Â Ä÷³ÀÇ ¼ö¸¦ Á¼È÷°í ½ÍÀº °Íµµ ÀÖ°ÚÁö¿ä. À̰ÍÀº,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);
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
°ªÀ» µ¹·ÁÁÝ´Ï´Ù.
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 (ȤÀº µ¥ÀÌŸº£À̽º, ȤÀº °Ñ(Ç¥) ¿µ¿ª) ÀÇ À̸§.
µðÆúÆ®¿¡¼´Â 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_Backend_File
(À»)¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù¸¸,
»óȲ¿¡ µû¶ó ÀûÀýÇÑ ¿¬±¸ ÃÖÁ¾ ´Ü°è¸¦ ±¸»çÇÒ ¼ö ÀÖ½À´Ï´Ù.»ó¼¼ÇÑ Á¤º¸´Â
Zend_Cache (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
µðÆúÆ®¿¡¼´Â, Å×À̺í Ŭ·¡½º°¡ µ¹·ÁÁÖ´Â Çà ¼¼Æ®´Â ±¸»ó Ŭ·¡½º 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¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
Å×À̺í Ŭ·¡½ºÀÇ 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) ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
¸¸¾à ƯÁ¤ÀÇ Á¶°Ç¿¡ ÀÇÇÑ Å×À̺íÀÇ °Ë»öÀ» ºó¹øÈ÷ ½Ç½ÃÇÑ´Ù¸é,
µ¶ÀÚÀûÀÎ °Ë»ö ¸Þ¼Òµå¸¦ Å×À̺í Ŭ·¡½º¿¡¼ ½ÇÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ëºÎºÐÀÇ ¹®ÀÇ´Â 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');
}
}
Å×À̺íÀÇ Å¬·¡½º¸íÀ» 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 ¿¡´Â ±×·¯ÇÑ ÇÔ¼ö´Â ¾ø½À´Ï´Ù.