Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Övriga serverspråk > PHP

Lite problem med en Join (ZF)

LP_MAXI
LP_MAXI

Gradering

#20028

Jag har ett problem med en join i en zend-sqlfråga. Så här ser SQL frågan ut.



public function getNewest($page, $pageSize)
   {
           $query = $this->select();
           $query   ->from(array('i' => 'image'), array('i.id','i.owner_id','i.filename'));
           $query   ->joinLeft(array('c' => 'image_comment'),'i.id = c.user_id', array('number_of_comments' =>'COUNT(*)'));
           $query   ->setIntegrityCheck(false);
           //$query   ->order('i.id desc');
           //$query   ->limit($pageSize,(($page-1)*$pageSize));
           $result = $this->fetchAll($query);
            Zend_Debug::dump($result); die();
           if(count($result)) {
               return $result;
           }
           return null;
   }

När jag debugar ut resultatet får jag detta:



object(Zend_Db_Table_Rowset)#90 (10) {
 ["_data":protected] => array(1) {
   [0] => array(4) {
     ["id"] => int(1)
     ["owner_id"] => int(3)
     ["filename"] => string(21) "/galleri/IMG_4090.jpg"
     ["number_of_comments"] => int(6)
   }
 }

 

Min databas struktur ser ut så här:

image

image_comment

Det jag vill skall hända är att alla bilderna skall visas och att man ser hur många kommentarer varje bild har. Men det som händer är att endast en bild visas och den får fel antal kommentarer på sig. Så något är fel. Kommenterar jag bort join raden så visas alla bilderna.

Säg till om ni behöver mer kod eller se något annat.

Jag använder mig utav Zend Framework.

 

 

http://www.lpmaxi.se/
Taggar: join, php, Zend framework,
ID: #20028 | Skapades: 2010-07-30 18:10:30 | Tråden har 3 svar och har lästs 132 gånger.

Sv: Lite problem med en Join (ZF)

LP_MAXI
LP_MAXI

Gradering

#20029

Det löste tydligen sig igår när Andreas hjälpte mig eller rättare sagt min kompis som stog för snacket via skype igår.

Andreas kanske kommer ihåg vad som var felet för jag hängde inte med så mycket igår.

 

Lite mer grejande idag så fick vi till det på ett bättre sätt, slutgiltliga lösningen blev alltså denna SQL för den som är intresserad:

    public function getLatest($page, $pageSize)
    {
        $query = $this->select();
        $query   ->from(array('i' => $this->_name), array('i.id','i.owner_id','i.filename'));
        $query   ->joinLeft(array('c' => 'image_comment'),'i.id = c.image_id', array('number_of_comments' =>'COUNT(c.id)'));
        $query   ->group('i.id');
        $query   ->setIntegrityCheck(false);
        $query   ->order('i.id desc');
        $query   ->limit($pageSize,(($page-1)*$pageSize));

        $result = $this->fetchAll($query);
         Zend_Debug::dump($result); die();
        if(count($result)) {
            return $result;
        }
        return null;
    }

 

 

http://www.lpmaxi.se/
Redigerades av LP_MAXI den 1 augusti 2010. Läs tidigare inlägg.
ID: #20029 | Skapades: 2010-07-31 21:33:48

Sv: Lite problem med en Join (ZF)

Varför inte göra vanliga queries istället? Eller klarar inte ZF det?
Själv använder jag Kohana och ren sql med parametrar istället.
Då kan man testa sina sqlfrågor i en databasklient som navicat först.

Goda råd är något alla söker efter, men som ingen följer, inte ens den som ger dem. ~ Harry Ruby
ID: #20048 | Skapades: 2010-08-05 14:50:04

Sv: Lite problem med en Join (ZF)

LP_MAXI
LP_MAXI

Gradering

#20050

Jag vet inte om ZF klarar ren SQL, jag har aldrig testat det. Men att skriva som jag gjort tycker jag fungerar utmärkt. Man behöver ju som sagt inte vara någon raketforskare för att kunna översätta den koden till ren SQL och testa i tex phpmyadmin.

 

 

http://www.lpmaxi.se/
ID: #20050 | Skapades: 2010-08-05 17:55:52
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy