jointure de table avec Zend Framework
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 :cry:
voici mon code :
page IndexController.php :
Code:
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 client.phtml
Code:
1 2 3 4
|
<?php foreach($this->clients as $client) :?>
<p><?php echo $client->nom;?></p>
<?php endforeach;?> |
la page models/Ami.php
Code:
1 2 3 4 5 6 7 8 9
|
<?php
class Ami extends Zend_Db_Table
{
protected $_name = 'ami';
protected $_primary = 'id';
}
?> |
la page models/Commande.php
Code:
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:
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
Citation:
Fatal error: Uncaught exception 'Zend_Db_Table_Select_Exception' with message 'Select query cannot join with another table' in C:....