考慮下面的例子:(從Zend的快速入門教程BTW)爲什麼我們需要在這裏取消設置?
public function save(Application_Model_Guestbook $guestbook)
{
$data = array(
'email' => $guestbook->getEmail(),
'comment' => $guestbook->getComment(),
'created' => date('Y-m-d H:i:s'),
);
if (null === ($id = $guestbook->getId())) {
unset($data['id']);
$this->getDbTable()->insert($data);
} else {
$this->getDbTable()->update($data, array('id = ?' => $id));
}
}
爲什麼我們需要設定解除呢? 我的意思是,如果我們之前沒有聲明它,爲什麼我們需要銷燬一個特定的數組鍵? 更奇怪的是,我們在哪裏宣佈它呢?
我們可以對getDbTable方法一看,但即使看着它,我沒有找到答案:
public function getDbTable()
{
if (null === $this->_dbTable) {
$this->setDbTable('Application_Model_DbTable_Guestbook');
}
return $this->_dbTable;
}
如果我們看看到setDbTable方法,有沒有什麼地方是沒有$的數據。
public function setDbTable($dbTable)
{
if (is_string($dbTable)) {
$dbTable = new $dbTable();
}
if (!$dbTable instanceof Zend_Db_Table_Abstract) {
throw new Exception('Invalid table data gateway provided');
}
$this->_dbTable = $dbTable;
return $this;
}
我知道,Zend框架會自動找到我們的表在這裏的ID:
class Application_Model_DbTable_Guestbook extends Zend_Db_Table_Abstract
{
/** Table name */
protected $_name = 'guestbook';
}
但如果這是某種聯繫,我不明白...
我相信我已經把所有的相關信息。不過,如果沒有什麼相關的,也許我失去了一些東西在這裏: (源) http://framework.zend.com/manual/en/learning.quickstart.create-model.html
非常感謝
如果$ data數組有一個來自其他地方的id,那麼您只需要在那裏取消設置,但是因爲您只是顯示了一些我們可以肯定說的代碼。如果$ data在其他地方設置了id。 – Prix 2011-05-08 11:55:21
用參考鏈接更新了我的問題。 – MEM 2011-05-08 12:05:29