Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour, j'essaie de connecter une base de données avec mon site, ce que j'ai réussi à faire. Cependant, je suis seulement capable d’interagir avec une seule table à la fois. J'ai essayer plusieurs choses afin de pouvoir communiquer avec deux table à la fois, soit faire un «joint», mais sans succès. Voici ce que j'ai fais pour afficher les données:
POUR LE MODULE:
//getAutoloaderConfig()...getConfig().... public function getServiceConfig(){ return array( 'factories' => array( 'Application\Model\ProjectModel' => function($sm) { $tableGateway = $sm->get('ProjectTableGateway'); $table = new ProjectModel($tableGateway); return $table; }, 'ProjectTableGateway' => function ($sm) { $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter'); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new ProjectObject()); return new TableGateway('project', $dbAdapter, null, $resultSetPrototype); }, ), ); }
POUR LE MODEL:
namespace Application\Model; //Certains «use» sont à effacer, ils sont inutiles; use Zend\Db\TableGateway\TableGateway; use Zend\Db\Adapter\Adapter; use Zend\Db\Adapter\AdapterAwareInterface; use Zend\Db\Sql\Sql, Zend\Db\Sql\Where, Zend\Db\Sql\Select; use Zend\Db\ResultSet\ResultSet; class ProjectModel extends TableGateway { protected $tableGateway; public function __construct (TableGateway $tableGateway){ $this->tableGateway = $tableGateway; } public function getProject($id){ $id = (int)$id; $rowset = $this->tableGateway->select(array('pro_id' => $id)); $result = $rowset->current(); if(!$result){ throw new \Exception("Could not find row $id"); } return $result; } }
MA QUESTION:
Que dois-je changer afin de pouvoir faire un «joint»?
Hors ligne
Salut,
Si tu souhaites absolument utiliser le TableGateway, alors tu dois procéder ainsi :
... use Zend\Db\Sql\Select; ... public function getProject($id) { $id = (int)$id; $rowset = $this->tableGateway->select(function (Select $select) use ($id) { $select->join(array('alias' => 'table2'), 'table1.id = table2.id'); $select->where(array('pro_id' => $id)); }); .... } ...
@+
Dernière modification par YannickDa (05-04-2013 09:37:26)
Hors ligne