Zend_Db_Table_Abstract :: _ первичный массив возврата?

Поэтому я определил такую ​​модель:

class Model extends Zend_Db_Table_Abstract { $_primary = 'modelID'; /** * * @param mixed $primaryKey * @return int */ public function delete($primaryKey) { $where = $this->getAdapter()->quoteInto($this->_primary.' = ?', $primaryKey); return parent::delete($where); } } 

Когда вы вызываете метод delete, я получаю предупреждение, указывающее мне $ this -> _ primary – это массив. Зачем? Я присвоил значение строки $ _primary.

Из журналов:

 2012-02-05T17:41:03+00:00 INFO (6): Array ( [1] => modelID ) 

Zend_Db_Table хранит первичные ключи в качестве массива в случае использования составного ключа, поэтому, строго говоря, лучше всего (не обязательно) объявлять их следующим образом:

 class Model extends Zend_Db_Table_Abstract { public function __construct(array $config = null) { $this->_primary[1] = 'modelId'; parent::__construct($config); //............. 

Из докблока в Zend_Db_Table_Abstract: –

 /** * The primary key column or columns. * A compound key should be declared as an array. * You may declare a single-column primary key * as a string. * * @var mixed */ protected $_primary = null; 

А из док-блока для $ _identity: –

 /** * If your primary key is a compound key, and one of the columns uses * an auto-increment or sequence-generated value, set _identity * to the ordinal index in the $_primary array for that column. * Note this index is the position of the column in the primary key, * not the position of the column in the table. The primary key * array is 1-based. * * @var integer */ protected $_identity = 1; 

Поэтому вы могли бы использовать это вместо этого.
Если у вас есть только один столбец в вашем основном ключе, то он будет равен $ _primary [1].

Я думаю, это сработает для вас:

 public function delete($primaryKey) { $where = $this->getAdapter()->quoteInto($this->_primary[1] .' = ?', $primaryKey); return parent::delete($where); }