Utilizzare - Zend_Db_Table_Definition

Ciao a tutti,

qualcuno sa usare Zend_Db_Table_Definition

Se io avessi queste due tabelle:

CREATE TABLE `users` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `id_profile` int(10) unsigned NOT NULL,
   `id_lang` int(10) unsigned NOT NULL DEFAULT '1',
   `firstname` varchar(25) CHARACTER SET utf8 NOT NULL,
   `lastname` varchar(25) CHARACTER SET utf8 NOT NULL,
   `email` varchar(50) CHARACTER SET utf8 NOT NULL,
   `password` varchar(50) CHARACTER SET utf8 NOT NULL,
   `salt` varchar(50) NOT NULL,
   `date_created` datetime NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

   e la tabella lang:

CREATE TABLE `lang` (
   `id_lang` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `lang_name` varchar(32) NOT NULL,
   `lang_active` tinyint(3) unsigned NOT NULL DEFAULT '0',
   `lang_iso_code` char(2) NOT NULL,
   `lang_code` char(5) NOT NULL,
   PRIMARY KEY (`id_lang`),
   KEY `lang_iso_code` (`lang_iso_code`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Le tabelle user e lang sono in relazione tramite la colonna id_lang.

Io ho provato a fare così:

public function indexAction() {
 $definition = new Zend_Db_Table_Definition(array(
     'lang' => array(
         'name' => 'lang',
         'dependentTables' => array('Admin_Model_Db_Users')
         ),
     'users' => array(
         'name' => 'users',
         'referenceMap' => array(
             'lang' => array(
                 'columns' => 'id_lang',
                 'refTableClass' => 'Admin_Model_Db_Lang',
                 'refColumns' => 'id_lang'
                 )
             )
         )
     )
);
 $authorTable = new Zend_Db_Table('lang', $definition);
 $result = $authorTable->fetchAll();
 foreach ($result as $result) {
   $result=$result->findDependentRowset('users');
 }
 $this->view->customers = $result;  
}

La classe per la tabella lang:

class Admin_Model_Db_Lang extends Zend_Db_Table_Abstract {
     protected $_name = 'lang';
     protected $_referenceMap = array(
         'users' => array(
             'columns' => 'id_lang',
             'refTableClass' => 'Admin_Model_Db_Users',
             'refColumns' => 'id_lang'
             )
         );
}

La classe per la tabella users:

class Admin_Model_Db_Users extends Zend_Db_Table_Abstract {
  protected $_name = 'users';
  protected $_referenceMap = array(
     'lang' => array(
          'columns' => 'id_lang',
          'refTableClass' => 'Admin_Model_Db_Lang',
          'refColumns' => 'id_lang'
     )
  );
}

Così mi recupera solamente i dati della tabella user senza però recuperare quelli della tabella lang. Qualcuno sa come fare? Conoscete delle buone guide per Zend_Db_Table_Definition (oltre a quella ufficiale ....)?

Grazie!

inviato 5 anni fa
Lapo
Lapo
7
modificato 5 anni fa
Gianni Tomasicchio
X 0 X

Spiacente non so aiutarti, ma ti posso dare un consiglio. 
Quando ho iniziato a studiare Zend e mi sono rapportato con Zend_Db e di conseguenza cercavo di definire il mio database con Zend_Db_Table_Definition, mi sono subito reso conto che era poco potente, allora cercando altrove ho trovato Doctrine che e' appunto un ORM (object relation mapper) e me ne sono subito innamorato e da allora non riesco a farne a meno, ti consiglio di provarlo! ;)

    small-logo.png  

risposto 5 anni fa
JellyBelly
X 0 X X
Effettua l'accesso o registrati per rispondere a questa domanda