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