Bonjour,

J'ai testé la requête SQL suivante dans phpMyAdmin pour vérifier que celle-ci était correcte et me retournait bien des résultats :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
SELECT * FROM constante c
JOIN constante_c cc ON cc.constante = c.id
JOIN langue l ON cc.langue = l.id
JOIN statut sl ON l.statut = sl.id
JOIN statut sc ON c.statut = sc.id
Et c'est OK ...

J'essaye d'écrire cette requête en 'langage Zend DB' en écrivant ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
function mySelect() {
		$select = $this->select(array('c' => $this));
		$select->setIntegrityCheck(false);
 
		$select->join(array('cc' => 'constante_c'), 'cc.constante = c.id');
		$select->join(array('l' => 'langue'), 'cc.langue = l.id');
		$select->join(array('sl' => 'statut'), 'sl.statut = l.id');
		$select->join(array('sc' => 'statut'), 'sc.statut = c.id');
 
		return $select;
	}
Pour la bonne compréhension du code, il faut savoir que je suis dans la classe "Constante" qui décrit ma table "constante" et qui étend donc Zend_Db_Table_Abstract.

C'est donc la raison pour laquelle je lance premièrement un :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
$select->setIntegrityCheck(false);
Le problème quand je test cette fonction en faisant ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
$const = new Constante();
$result = $const->fetchAll($const->mySelect())->toArray();
 
print_r($result);
... j'obtiens une erreur Zend, qui est la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
An error occurred
Application error
Exception information:
 
Message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'c.id' in 'on clause'
Stack trace:
 
#0 /home/mydevcc/sd/testing/www/library/Zend/Db/Statement.php(283): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/mydevcc/sd/testing/www/library/Zend/Db/Adapter/Abstract.php(430): Zend_Db_Statement->execute(Array)
#2 /home/mydevcc/sd/testing/www/library/Zend/Db/Adapter/Pdo/Abstract.php(220): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array)
#3 /home/mydevcc/sd/testing/www/library/Zend/Db/Table/Abstract.php(1191): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#4 /home/mydevcc/sd/testing/www/library/Zend/Db/Table/Abstract.php(1046): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select))
#5 /home/mydevcc/sd/testing/www/application/controllers/IndexController.php(10): Zend_Db_Table_Abstract->fetchAll(Object(Zend_Db_Table_Select))
#6 /home/mydevcc/sd/testing/www/library/Zend/Controller/Action.php(494): IndexController->indexAction()
#7 /home/mydevcc/sd/testing/www/library/Zend/Controller/Dispatcher/Standard.php(285): Zend_Controller_Action->dispatch('indexAction')
#8 /home/mydevcc/sd/testing/www/library/Zend/Controller/Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#9 /home/mydevcc/sd/testing/www/public/index.php(36): Zend_Controller_Front->dispatch()
#10 {main}
Quelqu'un peut m'aider ?

Merci,
Olivier