Advertisement
vegetus

Insert data with Zend_Form and Zend_Db_Table many-to-many

Jun 25th, 2012
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.49 KB | None | 0 0
  1. // [ Database ]
  2.  
  3. // Manager.php
  4.  
  5. class Application_Model_DbTable_Manager extends Zend_Db_Table_Abstract {
  6.  
  7.     protected $_name = 'managers';
  8.  
  9.     protected $_dependentTables = array('Application_Model_DbTable_ManagerProject');
  10.  
  11.     public function findManager($role) {
  12.         $select = $this->select();
  13.         $select->where('role = ?', $role);
  14.         return $this->fetchAll($select);
  15.     }
  16. }
  17.  
  18.  
  19. // Project.php
  20.  
  21. class Application_Model_DbTable_Project extends Zend_Db_Table_Abstract {
  22.  
  23.     protected $_name = 'projects';
  24.  
  25.     protected $_dependentTables = array('Application_Model_DbTable_ManagerProject');
  26.  
  27. }
  28.  
  29.  
  30.  
  31.  
  32. // ManagerProject.php
  33.  
  34. class Application_Model_DbTable_ManagerProject extends Zend_Db_Table_Abstract {
  35.  
  36.     protected $_name = 'managers_projects';
  37.  
  38.     protected $_referenceMap = array(
  39.         array(
  40.             'columns' => array('id_managers_managers'),
  41.             'refTableClass' => 'Application_Model_DbTable_Manager',
  42.             'refColumns' => array('id_manager')
  43.         ),
  44.         array(
  45.             'columns' => array('id_projects_projects'),
  46.             'refTableClass' => 'Application_Model_DbTable_Project',
  47.             'refColumns' => array('id_project')
  48.         )
  49.     );
  50.  
  51. }
  52.  
  53.  
  54.  
  55.  
  56.  
  57. //[ Form ]
  58.  
  59. //Project.php
  60.  
  61. class Application_Form_Project extends Zend_Form {
  62.  
  63.  
  64.     public function init() {
  65.        
  66.         $idProject = Zend_Form_Element_Hidden('id_project');
  67.  
  68.         $nameProject = Zend_Form_Element_Text('name_project');
  69.  
  70.         $managers = Zend_Form_Element_MultipleSelect('id_manager');
  71.  
  72.         $table = new Application_Model_DbTable_Manager();
  73.        
  74.             foreach($table->findManager('manager') as $object) {
  75.                     $managers->addMultiOption($object->id_manager, $object->name);
  76.             }
  77.  
  78.         $submit = new Zend_Form_Element_Submit('submit');
  79.  
  80.         $this->addElements(array($idProject, $nameProject, $managers, $submit));
  81.  
  82.     }
  83.  
  84. }
  85.  
  86.  
  87. // [ Controller ]
  88.  
  89. //ProjectController.php
  90.  
  91. class ProjectController extends Zend_Controller_Action {
  92.  
  93.  
  94.     public function addAction()
  95.     {
  96.         $form = new Application_Form_Project();
  97.         $this->view->form = $form;
  98.        
  99.         if($this->getRequest()->isPost()) {
  100.             if($form->isValid($this->getRequest()->getPost())) {
  101.                
  102.                 $databaseProject = new Application_Model_DbTable_Project();
  103.  
  104.  
  105.         /**
  106.         * How do I include in table many-to-many?
  107.         *
  108.         *
  109.         *
  110.         */
  111.        
  112.  
  113.  
  114.             }
  115.         }
  116.  
  117.         $this->view->form = $form;
  118.     }
  119.  
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement