Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2007, 12h12   #1
Invité de passage
 
Inscription : mai 2007
Messages : 2
Détails du profil
Informations personnelles :
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : mai 2007
Messages : 2
Points : 0
Points : 0
Par défaut Problème de récupération de l'adapter.. enfin je crois!

Salut à tous !

tout d'abord je suis nouveau dans le monde du php , mais je me suis rapidement lancer dans le ZF pour la realisation d'un projet. Donc soyez indulgent .

Je desire basiquement récupérer des données de ma BDD via l'ORM.
j'ai donc créer un classe metier 'page' dont voici la sommaire trame :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
 
Zend_loader::loadClass("Zend_Db_Table");
 
class Page extends Zend_Db_Table_Abstract
{
        protected $_name = 'page';    
	protected $_primary = 'id';
        protected $_sequence = true;
 
	public function findByName($psName)
        {
		$where = $this->getAdapter()->quoteInto('nom = ?',(string)$psName);
		return $this->fetchRow($where);
	}	
}
dans mon controleur je veux juste tester quelque chose du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
	function init()
	{
		$this->moPage = new Page();	
		$this->moView = Zend_registry::get('view');	
        }
 
        public function indexAction()
	{			
		$findedPages = $this->moPage->find(1);
		echo $this->moView->render('scripts/gabarit.php');
       }

et la patatra !! j'ai une belle erreur :

Citation:
Call to a member function quoteInto() on a non-object in D:\WWW\...\Zend\Db\Table\Abstract.php on line 628

j'ai donc l'impression qu'il ne veut pas recuperer mon adapter que j'ai pourtant defini dans la page d'index comme ceci :

Code :
1
2
3
4
 
 
		$dbAdapter = Zend_Db::factory($config->db->adapter , $config->db->config->asArray());
		Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);


je ne suis pas sur d'etre très clair , mais si quelqu'un avez un piste merci de bien vouloir me sortir de cette galère !!
kelton est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 13h54   #2
Rédacteur
 
Avatar de doctorrock
 
Homme Julien Pauli
Architecte de système d'information
Inscription : mai 2006
Messages : 597
Détails du profil
Informations personnelles :
Nom : Homme Julien Pauli
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : mai 2006
Messages : 597
Points : 5 015
Points : 5 015
Bizarre, je ne vois rien qui cloche, à part le fait que tu définisse une méthode findByName(), pour ne pas l'appeler dans le contrôleur, mais appeler find(), ce qui en soit est tout à fait légitime.

Ton code ne comporte vraimant aucune erreur, si l'adapter avait buggué ( mauvais driver, mauvais identifiant à la base ) , il l'aurait signalé lors de l'instanciation de ta table ORM.

L'erreur venant de chemin\Db\Table\Abstract.php ; c'est d'autant plus bizarre...
__________________
.: Expert contributeur certifié PHP/ZF :.
Mes articles - Twitter - GitHub
doctorrock est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 14h48   #3
Invité de passage
 
Inscription : mai 2007
Messages : 2
Détails du profil
Informations personnelles :
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : mai 2007
Messages : 2
Points : 0
Points : 0
Merci pour ta réponse même si j'aurai préferé avoir fait une erreur qui règle illico le PB.

ce qui est bizarre c'est que si je fait :

Code :
1
2
3
4
 
 
$oAdapter = $this->moPage->getAdapter();
Zend_Debug::dump($oAdapter, $label='adapter : ', $echo=true);
et bien comme résultat j'ai : NULL

Hors il me semble qu'il devrait me renvoyer un Objet .


Par contre si j'affiche les info de ma table :

Code :
1
2
3
4
 
 
		$oPage = $this->moPage->info();
		Zend_Debug::dump($oPage, $label='page : ', $echo=true);
Voila ce quil me donne en retour

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
page : array(9) {
  ["schema"] => string(8) "site-epl"
  ["name"] => string(4) "page"
  ["cols"] => array(0) {
  }
  ["primary"] => array(1) {
    [0] => string(2) "id"
  }
  ["metadata"] => array(0) {
  }
  ["rowClass"] => string(17) "Zend_Db_Table_Row"
  ["rowsetClass"] => string(20) "Zend_Db_Table_Rowset"
  ["referenceMap"] => array(0) {
  }
  ["dependentTables"] => array(0) {
  }
}
ce qui m'inquete c'est le ["metadata"] => array(0) ;

si ca peut vous donner des indices !!
kelton est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 16h07   #4
Rédacteur
 
Avatar de doctorrock
 
Homme Julien Pauli
Architecte de système d'information
Inscription : mai 2006
Messages : 597
Détails du profil
Informations personnelles :
Nom : Homme Julien Pauli
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : mai 2006
Messages : 597
Points : 5 015
Points : 5 015
Il n'est pas normal qu'il retourne NULL.
Il n'est pas non plus normal qu'il ne renvoie aucune exception.

Il faut mettre à jour la version de ZF, et entammer un déboggage avancé.
__________________
.: Expert contributeur certifié PHP/ZF :.
Mes articles - Twitter - GitHub
doctorrock est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h54.


 
 
 
 
Partenaires

Hébergement Web