我正在修复与Zend_Db_Table模型相关的错误。我面临的问题是,神不知鬼不觉被改变的Zend_Db_Table类祖先的$ _primary财产你打电话后插入,更新等Zend Framework 1.12:Zend表的_setupPrimaryKey方法
比方说,我在这个领域有以下值:
Class Model_Book extends App_Base_FileForAcs implements App_Interface_OnixDataSource, App_Interface_ApiDataSource, App_Interface_DbGateway
{
protected $_name = 'book';
protected $_primary = 'book_id';
...
}
如果我检查插入操作之后$ _primary它将包含:
array(1) {
[1]=>
string(7) "book_id"
}
这一转变发生在Zend_Db_Table_Abstract类的_setupPrimaryKey方法。你能解释为什么这个字段应该转换为数组,并且为什么数组以非0索引开头?
谢谢你的回答。我的问题是,我期望像任何其他地方一样,数组以索引0开头。为什么ZF决定以1开始这个阵列 - 这有什么特别的原因吗? – Tamara
不,我不确定他们为什么这样实施它。有一个函数试图从表元数据中找出主键,然后将索引设置为表定义中列的相对位置。还有一些PostgreSQL的特殊情况可能会以某种方式使用该索引。由于任何“硬编码”索引键索引在1像你说的,我不明白它会有什么不同。也许这是一些从未完成的工作?如果你想深入挖掘,你可以在'Zend \ Db \ Table \ Abstract.php'中找到围绕第872行的代码。 – Bing