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);
}

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);

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`')

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

Code:

$select->from($this->_name,  array('count' => 'COUNT(id_message)')

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');
}

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);

j'ai

Code:

Zend_Db_Table_Abstract::setDefaultAdapter($db);

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);

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();
    }
}

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