2014-07-22 25 views
-1

我一直在寻找一个小时或两个小时的答案,找不到它。我有这个类延伸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

有答案你链接的问题 - “专卖店的Zend_Db_Table主键作为数组情况下的组合键用过的”。这意味着SQL表可以将多个列设置为PRIMARY KEY来创建称为“复合键”的事物。这样的密钥不能存储在单个变量中,这就是为什么它存储在数组中。大多数表使用单个键,因此Zend可以根据键返回字符串或数组,但他们更愿意保持一致并始终返回数组。

相关问题