我一直在寻找一两个小时的答案而无法找到答案。我有这个类扩展Zend_Db_Table_Abstract
,我填充表名和主键。这是:
<?php
class Produit_Model_DbTable_Fiche extends Zend_Db_Table_Abstract
{
/**
* @var string
*/
protected $_name = 'table_name';
/**
* @var string
*/
protected $_primary = 'primary';
public function getName()
{
return $this->_name;
}
public function getPrimary()
{
return $this->_primary;
}
}
如您所见,受保护的属性_primary是一个字符串。但是,当我通过以下代码中的$db->getPrimary()
检索此信息时,它将作为只有一个条目[1] => 'id'
的数组返回。
// $db is an instance of Produit_Model_DbTable_Fiche
$select = $db->select();
$select->from($db, $columns)
->where($db->info('primary').' = ?', $id);
$row = $db->fetchRow($select);
错误消息指出Column not found: 1054 Unknown column 'Array' in 'where clause'
,因为正如我所说,我试图用$db->info('primary')
回显一个数组,而我希望它是一个字符串。
PS:我已经看过这个问题/答案,但我仍处于模糊状态:Zend_Db_Table_Abstract::_primary returns array?
答案 0 :(得分:0)
有问题的答案你链接 - “Zend_Db_Table将主键存储为数组,以防使用复合键”。这意味着SQL表可以将多个列设置为PRIMARY KEY,从而创建一个名为“复合键”的东西。这样的密钥不能存储在单个变量中,这就是为什么它存储在数组中。大多数表使用单键,因此Zend可以根据键返回字符串或数组,但是它们希望保持一致并返回始终为数组。