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 :
Et c'est OK ...
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
J'essaye d'écrire cette requête en 'langage Zend DB' en écrivant ceci :
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.
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; }
C'est donc la raison pour laquelle je lance premièrement un :
Le problème quand je test cette fonction en faisant ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $select->setIntegrityCheck(false);
... j'obtiens une erreur Zend, qui est la suivante :
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);
Quelqu'un peut m'aider ?
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}
Merci,
Olivier
Partager