我有一个现有的MSSQL表,其主键为uniqueidentifier
,默认值为NEWID()
。
我似乎无法让Zend Framework的(1.1.11)Zend_Db_Table_Row
对象通过save()
在此表中正确创建新行,它会给出错误{ {1}}(虽然该行实际上已正确插入)。
查看'Cannot refresh row as parent is missing'
错误来自Zend_Db_Table_Row_Abstract
函数并抛出异常,因为它无法获取插入的行。 _refresh()
函数中的$where
值显示主键值为_refresh()
,因此无法与新行匹配。
Zend是否存在一些问题,如果它是''
列,那么在插入后确定主键的值是什么?
答案 0 :(得分:0)
我目前的解决方案是简单地运行单独的查询以生成uniqueidentifier
,并在保存之前将其分配给主键字段,例如
public function getNewId()
{
$result = $this->getAdapter()->query('SELECT NEWID()')->fetch();
return $result['computed'];
}
然后分配并保存:
$row = $tblWhatever->createrow($data);
$row->primaryKeyName = $tblWhatever->getNewId();
$row->save();
它不像Zend从列的默认值条目中获取PK生成的值那样干净,但它保存而不会抛出异常。