我收到錯誤「無法刷新行,因爲父母丟失」,當我嘗試保存。這裏是我的代碼由於缺少父項,無法刷新行。 Zend框架
abstract class Webapp_Model_Resource_Db_Table_Abstract
extends Zend_Db_Table_Abstract
{
/**
* Save a row to the database
*
*
* @param array $info The data to insert/update
* @param Zend_DB_Table_Row $row Optional The row to use
* @return mixed The primary key
*/
public function saveRow($info, $row = null)
{
if (null === $row) {
$row = $this->createRow();
}
$columns = $this->info('cols');
foreach ($columns as $column) {
if (array_key_exists($column, $info)) {
$row->$column = $info[$column];
}
}
return $row->save();
}
}
當我打電話的saveRow()方法中,我通過在$ _ POST值($形式 - >的GetValues())
與我在其他模塊中我已經重複使用這個類相同的應用程序,但現在我得到這個錯誤,我不知道爲什麼。我的桌子很簡單:
CREATE TABLE `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`headline` varchar(100) DEFAULT NULL,
`snippet` varchar(500) DEFAULT NULL,
`full_text` text,
`author` varchar(100) DEFAULT NULL,
`publish_from` date DEFAULT NULL COMMENT 'Publish date',
`publish_to` date DEFAULT NULL COMMENT 'Take it down or mark as draft after this date',
`datecreated` timestamp NULL DEFAULT NULL COMMENT 'First created on',
`revised` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Timestamp for the last time it was revised',
`draft` tinyint(1) DEFAULT '0' COMMENT 'Should not be published',
`departments_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8 COMMENT='Stores news articles';
任何人都知道我在做什麼錯了?
:::::::::::::: ADDTION :::::::::::::
public function saveNews($post,$defaults = array())
{
//get the form
$form = $this->getForm('article' . ucfirst($validator));
//validate
if(!$form->isValid($post)) {
return false;
}
//get fitered values
$data = $form->getValues();
//apply defaults
foreach($defaults as $col => $value) {
$data[$col] = $value;
}
//get the article if it exists
$article = array_key_exists('id', $data) ?
$this->getNewsById($data['id']) : null;
return $this->saveRow($data, $article);
}
爲什麼不使用'Zend_Db_Table_Row_Abstract :: save()'?這裏:http://framework.zend.com/apidoc/core/Zend_Db/Table/Zend_Db_Table_Row_Abstract.html#save – chelmertz 2010-08-09 15:28:10
@chelmertz多數民衆贊成在我使用的是。看看我的類如何擴展Zend_Db_Table_Abstract。 數據已成功插入數據庫,但代碼Zend_Db_Table_Row_Abstract :: save()也在內部調用_refresh(),那是當我得到錯誤 – browndash 2010-08-09 16:38:43
我仍然不明白你爲什麼使用saveRow()而不是保存()。沒關係,錯誤仍然存在,但首先你必須刪除它,對吧?另外,您是否在保存時設置了departments_id?可能錯誤與關係有關。也張貼您的控制器的代碼。 – 2010-08-09 17:17:00