Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-07-2011 18:43:57

thebarbarius
Membre
Date d'inscription: 11-07-2011
Messages: 25

Requete sql jointure

Bonjours,

J'essaye de construire cette requette sous zend.

Code:

SELECT topic.tid, topic.title, topic.posts, topic.starter_id, topic.start_date, topic.starter_name, topic.views, topic.topic_rating_total, topic.topic_rating_hits, post.post
FROM ibf_topics AS topic
INNER JOIN ibf_posts AS post ON post.topic_id = topic.tid
AND topic.topic_firstpost = post.pid
WHERE topic.forum_id =39
AND topic.approved =1
ORDER BY topic.start_date DESC
LIMIT 0 , 5

Pour l'instant j'en suis la :

Code:

$select = $this->select()
                  ->from(array('topic'=>'ibf_topics'),
                        array('tid', 'title', 'posts', 'starter_id', 'start_date', 'starter_name', 'views', 'topic_rating_total', 'topic_rating_hits'))
                      ->join(array('post'=>'ibf_posts'),
                       array('post'));
$r = $this->fetchAll($select);

Quelqu'un de bienveillant pourrai m'aider a la finir ?

Merci

Hors ligne

 

#2 20-07-2011 09:19:27

damdamien
Membre
Date d'inscription: 02-07-2011
Messages: 22

Re: Requete sql jointure

Bonjour,

Il me semble avoir lu quelque part que dans la futur version du framework DOCTRINE serait intégré nativement donc moi perso je ne me prends plus la tete a cherché a utilisé ZEND DB.

je prends la requete est je la balance dans un query(). Plutot que de cherché à comprendre un outil qui ne sera pas maintenu dans les prochaines version.

Hors ligne

 

#3 20-07-2011 11:51:15

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Requete sql jointure

il manque des argument à ta méthode join
A+JYT

Hors ligne

 

#4 20-07-2011 15:13:25

thebarbarius
Membre
Date d'inscription: 11-07-2011
Messages: 25

Re: Requete sql jointure

Ma jointure fonctionne sans probleme.

Je veux juste l'dapter, a zend select.

damdamien Auriez vous la source de se que vous avancez ?

Hors ligne

 

#5 20-07-2011 16:03:25

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Requete sql jointure

je parle pas de ton SQl mais de l'appel à la méthode join dans ton php il te manque la clause de jointure

Code:

[lang=php]$select = $this->select()
  ->from(
    array('topic'=>'ibf_topics'),
    array('tid', 'title', 'posts', 'starter_id', 'start_date', 'starter_name', 'views', 'topic_rating_total', 'topic_rating_hits')
  )
  ->join(
    array('post'=>'ibf_posts'),
    '(post.topic_id = topic.tid) AND (topic.topic_firstpost = post.pid)'),
    array('post')
  )
  ->where (topic.forum_id =39)
  ->where (topic.approved =1)
  ->order('topic.start_date', 'DESC')
  ->limit(0 , 5);
$r = $this->fetchAll($select);

si dans la clause de jointure ou dans un (nom de )champs, la chaîne contient des parenthèse elle est automatiquement transformé en expression Zend_Db_Expr
sinon il faut faire

Code:

[lang=php]new Zend_Db_Expr('post.topic_id = topic.tid AND topic.topic_firstpost = post.pid')

A+JYT

Dernière modification par sekaijin (20-07-2011 16:04:55)

Hors ligne

 

#6 20-07-2011 16:22:20

thebarbarius
Membre
Date d'inscription: 11-07-2011
Messages: 25

Re: Requete sql jointure

Alors ok.

Merci de se gros coup de main.

Par contre j'ai cette erreur

Code:

<?php
class Default_Model_DbTable_News extends Zend_Db_Table {
    protected $_name    = 'dark-rivals.ibf_topics';
    protected $_primary    = 'tid';
    
    public function GetNews() {
        $select = $this->select()
          ->from(
            array('topic'=>'ibf_topics'),
            array('tid', 'title', 'posts', 'starter_id', 'start_date', 'starter_name', 'views', 'topic_rating_total', 'topic_rating_hits')
          )
          ->join(
            array('post'=>'ibf_posts'),
            ('post.topic_id = topic.tid) AND (topic.topic_firstpost = post.pid'),
            array('post')
          )
          ->where ('topic.forum_id = 39')
          ->where ('topic.approved = 1')
          ->order('topic.start_date', 'DESC')
          ->limit(0 , 5);
        $r = $this->fetchAll($select);
    }
}

Hors ligne

 

#7 20-07-2011 17:02:39

thebarbarius
Membre
Date d'inscription: 11-07-2011
Messages: 25

Re: Requete sql jointure

Probleme resolue en rajoutant

Code:

$select = $this->select();
$select->setIntegrityCheck(false)
// ....

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