Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-06-2007 18:46:13

Ouaibou
Membre
Date d'inscription: 26-06-2007
Messages: 16
Site web

[Zend_Db][RC3] Jointure :(

Bonsoir,

Certains auront remarqué que j'ai supprimé mon message précédent car en lisant certains messages du forum j'ai trouvé des réponses à certaines questions que je me posais.

Ma question est maintenant la suivante :

Je souhaite faire une jointure entre deux tables 'News' et 'Users'.
Pour cela j'utilise un modèle :

Code:

<?php
class News extends Zend_Db_Table_Abstract
{
    protected $_name             = 'news';
    protected $_primary            = 'news_id';
    
    public function getNews($order = 'date_creation', $sort = 'DESC')
    {
        $sql  = 'SELECT news_id, news.user_id, date_creation, date_modification ';
        $sql .= 'title, content, username FROM news JOIN users ';
        $sql .= 'USING(user_id) ORDER BY ' . $order . ' ' . $sort;
            
        return parent::fetchAll($sql);
    }
}
?>

En faisant ainsi j'obtiens une erreur de cardinalité dont je ne comprend pas le sens :

Fatal error: Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)' in /Users/laurent/Sites/www.ouaibou.info/library/Zend/Db/Statement/Pdo.php:227 Stack trace: #0 /Users/laurent/Sites/www.ouaibou.info/library/Zend/Db/Statement.php(298): Zend_Db_Statement_Pdo->_execute(Array) #1 /Users/laurent/Sites/www.ouaibou.info/library/Zend/Db/Adapter/Abstract.php(262): Zend_Db_Statement->execute(Array) #2 /Users/laurent/Sites/www.ouaibou.info/library/Zend/Db/Adapter/Pdo/Abstract.php(206): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Select), Array) #3 /Users/laurent/Sites/www.ouaibou.info/library/Zend/Db/Table/Abstract.php(1095): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Select)) #4 /Users/laurent/Sites/www.ouaibou.info/library/Zend/Db/Table/Abstract.php(978): Zend_Db_Table_Abstract->_fetch('SELECT news_id,...', NULL, NULL, NULL) #5 /Users/laurent/Sites/www.ouaibou.info/application/models/News.php(13): Zend_Db_Table_Abstract->fetchAll( in /Users/laurent/Sites/www.ouaibou.info/library/Zend/Db/Statement/Pdo.php on line 227

Quelqu'un saurait il m'expliquer pour ça fonctionne pas ?

Merci.

Cordialement,
Laurent

Hors ligne

 

#2 29-06-2007 09:51:50

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [Zend_Db][RC3] Jointure :(

Bonjour,

Issue de la doc Mysql  :
"La clause USING  (column_list) recense la liste des colonnes qui doivent exister dans les deux tables. Les clauses USING suivantes sont identiques :"

Code:

a LEFT JOIN b USING (c1,c2,c3)
a LEFT JOIN b ON a.c1=b.c1 AND a.c2=b.c2 AND a.c3=b.c3

As tu un champ user_id dans tes 2 tables ?


Société : Direct Info Service

Hors ligne

 

#3 29-06-2007 10:04:55

Ouaibou
Membre
Date d'inscription: 26-06-2007
Messages: 16
Site web

Re: [Zend_Db][RC3] Jointure :(

yannux a écrit:

As tu un champ user_id dans tes 2 tables ?

Oui smile

J'ai finalement réussi à m'en sortir en faisant ainsi :

Code:

<?php
class News extends Zend_Db_Table_Abstract
{
    protected $_name             = 'news';
    protected $_primary            = 'news_id';
    
    public function getNews($order = 'date_creation', $sort = 'DESC')
    {
        $select = $this->getDefaultAdapter()->select();
        $select->from('news')
               ->join('users', 'news.user_id=users.user_id', 'username')
               ->order($order . ' ' . $sort);
            
        return $this->getDefaultAdapter()->fetchAll($select);
    }
}
?>

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