Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-07-2008 00:36:53

versgui
Nouveau membre
Date d'inscription: 25-07-2008
Messages: 6

[Zend_Db_Table] Problème avec Adapter

Bonjour,

Il est tard, j'ai passé ma soirée sur ce problème, j'ai la tête en vrac, je vais donc tenter de faire bref mais complet :p

J'ai réalisé une classe d'accès à une table nommée "messages", par le biais de Zend_Db_Table. Dans cette classe, j'ai cette méthode :

Code:

public function countNotRead()
{
    $select = $this->select();
    $select->from($this, 'COUNT(id_message) as `count`')
        ->where('destinataire = ?', $this->auth->getIdentity()->id_joueur);

    $rows = $this->fetchAll($select);
}
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Et lors de l'appel de la méthode, je tombe sur cette erreur :

Catchable fatal error: Argument 1 passed to Zend_Db_Select::__construct() must be an instance of Zend_Db_Adapter_Abstract, null given, called in /home/guillaume/workspace/library/Zend/Db/Table/Select.php on line 69 and defined in /home/guillaume/workspace/library/Zend/Db/Select.php on line 142

Fatal error: Call to a member function quoteInto() on a non-object in /home/guillaume/workspace/library/Zend/Db/Select.php on line 786


Sur mon bootstrap, j'ai ce code :

Code:

// $config correspond à un .ini

$db = Zend_Db::factory($config->db);
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Si, dans ma méthode, je fais   print_r($this->getAdapter());, rien ne s'affiche.
Si je fais   print_r(Zend_Registry::get('dbAdapter'));, l'ensemble des informtions concernant l'adapter s'affichent.

Bref, je ne comprend rien. Quelqu'un aurait-il une piste ?

Merci d'avance

Dernière modification par versgui (31-07-2008 00:37:57)

Hors ligne

 

#2 31-07-2008 10:34:20

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: [Zend_Db_Table] Problème avec Adapter

Moi je l'écris comme ca cette ligne :

Code:

$select->from($this, 'COUNT(id_message) as `count`')
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

J'avais des problèmes avec 'as' du coup je fais comme ceci

Code:

$select->from($this->_name,  array('count' => 'COUNT(id_message)')
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#3 31-07-2008 17:44:19

versgui
Nouveau membre
Date d'inscription: 25-07-2008
Messages: 6

Re: [Zend_Db_Table] Problème avec Adapter

Hum, oui, il y a plusieurs façons de faire, mais mon problème ne vient pas de la requête mais bien de l'adapter :\

Hors ligne

 

#4 31-07-2008 18:30:44

versgui
Nouveau membre
Date d'inscription: 25-07-2008
Messages: 6

Re: [Zend_Db_Table] Problème avec Adapter

Bon, j'ai réussi à contourner mon problème en forcant l'utilisation de l'adapter :

Code:

public function __construct()
{
        $this->_db = Zend_Registry::get('dbAdapter');
}
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Mais c'est pas top comme méthode, je préférerais que ce soit automatique... Si quelqu'un à une réponse à mon problème...

Hors ligne

 

#5 31-07-2008 19:19:08

Mat
Membre
Lieu: Clermont-Ferrand
Date d'inscription: 20-07-2008
Messages: 15
Site web

Re: [Zend_Db_Table] Problème avec Adapter

Hello

J'y crois moyennement (enfin j'ai pas vu ta classe de table donc je sais pas trop), mais la seule difference que j'y vois c'est qu'au lieu de

Code:

Zend_Db_Table::setDefaultAdapter($db);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

j'ai

Code:

Zend_Db_Table_Abstract::setDefaultAdapter($db);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Hors ligne

 

#6 31-07-2008 20:00:05

versgui
Nouveau membre
Date d'inscription: 25-07-2008
Messages: 6

Re: [Zend_Db_Table] Problème avec Adapter

Bien vu, mais ça ne change rien : l'erreur est toujours là.
La classe de ma table ne comprend rien d'autre que ce que j'ai mit sur ce topic.

Hors ligne

 

#7 01-08-2008 08:24:24

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

Re: [Zend_Db_Table] Problème avec Adapter

Salut,

As tu d'autres méthodes dans ta classe qui font appel à la bdd qui fonctionnent (est-ce un pb lié à la méthode ou à la classe en général) ?

Personnellement, dans le bootstrap j'utilise

Code:

Zend_Db_Table::setDefaultAdapter($db);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

et mes classes héritent de Zend_Db_Table_Abstract

Code:

class Toto extends Zend_Db_Table_Abstract
{
    function test ()
    {
        $db = $this->getAdapter();
        $select = $db    ->select();
    }
}
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Dernière modification par grandlap (01-08-2008 08:24:59)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages