簡體   English   中英

Zend Framework 1.12:Zend Table的_setupPrimaryKey方法

[英]Zend Framework 1.12: _setupPrimaryKey method of Zend Table

我正在修復與Zend_Db_Table模型有關的錯誤。 我面臨的問題是Zend_Db_Table祖先的$ _primary屬性在您調用插入,更新等后神秘地更改了。

假設我在此字段中具有以下值:

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索引開頭?

ZF在內部使用數組定義主鍵,以便管理復合鍵。 在這里描述:

http://framework.zend.com/manual/1.12/en/zend.db.table.html#zend.db.table.defining.primary-key

_setupPrimaryKey中的代碼將您的字符串轉換為索引為1的數組,或者如果它已經是數組,則執行array_unshift($this->_primary, null)然后取消設置_primary [0]以使其從1開始。

要獲取主鍵(始終作為數組),您將在這里找到更多信息: 從Zend_Db_Table_Rowset對象中獲取主鍵 -包括如何從表對象中獲取主鍵

因此,簡而言之-主鍵始終是數組,但是ZF允許您為方便起見將其定義為字符串。 您從未描述過您的錯誤,但是如果您依賴主鍵為字符串,直接讀取$ _primary,則可能應該改用$objZenDbTable->info('primary')來獲取鍵,從而完全期待一個數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM