Bonjour,
je débute dans le système MVC et également dans zend framework
j'ai une petite application php avec une db, dans cette db j'ai deux tables
une table appelé ami et l'autre commande
j'ai déjà réussi à faire des requêtes qui affichait simplement les enregistrement de la table ami, et également à affiner avec des clauses where
ce que je voudrai faire maintenant, c'est réaliser une jointure des deux tables pour afficher les amis qui ont des commandes dans la table commande. Mais là je suis perdu
voici mon code :
page IndexController.php :
la page client.phtml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public function clientAction() { $this->view->title = "Liste des amis ayant des commandes en cours"; $amis = new Ami(); $commande = new Commande(); $select = $amis->select('nom') ->from('ami') ->join('commande','commande.idAmi = ami.id'); $this->view->clients = $amis->fetchAll($select); }
la page models/Ami.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?php foreach($this->clients as $client) :?> <p><?php echo $client->nom;?></p> <?php endforeach;?>
la page models/Commande.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php class Ami extends Zend_Db_Table { protected $_name = 'ami'; protected $_primary = 'id'; } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php class Commande extends Zend_Db_Table { protected $_name = 'commande'; protected $_primary = 'id'; } ?>
et pour finir la page index.php
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 <?php error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 1); date_default_timezone_set('Europe/Paris'); // mise en place des répertoires et chargement des classes set_include_path('.' . PATH_SEPARATOR . './library' . PATH_SEPARATOR . './application/models/' . PATH_SEPARATOR . get_include_path()); include "Zend/Loader.php"; Zend_Loader::registerAutoload(); //on définit un nouvel objet de configuration $oConfig = new Zend_Config_Ini('./application/config.ini', 'connexion'); // Mise en place de la BDD $oDb = Zend_Db::factory($oConfig->db); // on définit notre objet de base de données par défaut Zend_Db_Table::setDefaultAdapter($oDb); // setup controller $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->setControllerDirectory('./application/controllers'); // on définit le chemin des layouts $aOptions = array( 'layout' => 'home', 'layoutPath' => './application/layouts' ); Zend_Layout::startMvc($aOptions); // run! $frontController->dispatch(); ?>
pour l'instant je teste en tapant simplement l'url monsite/index/client
mais j'ai un message d'erreur
Fatal error: Uncaught exception 'Zend_Db_Table_Select_Exception' with message 'Select query cannot join with another table' in C:....
Partager