2

findManyToManyRowset() メソッドの結果から列を除外する方法は?

$servers = $this->findManyToManyRowset(
                'Serverlog_Model_DbTable_Computer', 
                'Serverlog_Model_DbTable_Server');

$servers->toArray() は私に与えます:

object(Serverlog_Model_Rowset_Computer)#458 (10) {
["_data":protected] => array(5) {
[0] => array(27) {
  ["id"] => int(462)
  ["name"] => string(10) "test"
  ["key"] => string(0) ""
  ["keyboard"] => int(1)
  ["mouse"] => int(0)
  ["serial_nr"] => string(10) "test"
  ["status"] => int(1)      
}

Zend_Db_Table_Rowset_Abstract と Zend_Db_Table_Row_Abstract から継承したメソッド toArray() をオーバーロードしようとしましたが、何も変わりませんでした。

class Serverlog_Model_DbTable_Computer extends My_DbTable_Model {

  protected $_name = 'computers';
  protected $_dependentTables = array('Serverlog_Model_DbTable_Server');
  protected $_rowClass = 'Serverlog_Model_Row_Computer';
  protected $_rowsetClass = 'Serverlog_Model_Rowset_Computer';  


class Serverlog_Model_Rowset_Computer extends Zend_Db_Table_Rowset_Abstract {
public function toArray() {
    foreach ($this->_rows as $i => $row) {
        $this->_data[$i] = array($row->_data['id'] => $row->_data['name']);
    }
    return $this->_data;
}

class Serverlog_Model_Row_Computer extends Zend_Db_Table_Row_Abstract {
 public function toArray() {
    return array($this->_data['id'] => $this->_data['name']);
}  
}

$servers->toArray() から結果を取得したい:

object(Serverlog_Model_Rowset_Computer)#458 (10) {
["_data":protected] => array(5) {
[0] => array(27) {
  ["id"] => int(462)
  ["name"] => string(10) "test"  
}
4

1 に答える 1

0

行オブジェクトは、DbTable の行構造の反映表現であることを意図しています。行オブジェクトからフィールドを除外できるのは、あいまいな動作です。

于 2012-11-09T15:19:44.800 に答える