基于具有PK uniqueidentifier的MSSQL表的新Zend_Db_Table_Row - 由于缺少父级而无法刷新行

时间:2014-05-07 09:50:51

标签: php sql sql-server zend-framework pdo

我有一个现有的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是否存在一些问题,如果它是''列,那么在插入后确定主键的值是什么?

1 个答案:

答案 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生成的值那样干净,但它保存而不会抛出异常。