Empfehlungen: Erweiterte Suche

PaginationHelper

Unterstützung der Daten-Formatierung in den Views (DRY)

PaginationHelper

Beitragvon havanna » Sa 25. Okt 2008, 23:17

Hallo zusammen,

kann mir jemand sagen, wie ich das Problem löse: Ich versuche mich seit einigen Tagen am PaginationHelper.

Mein Coding im Controller sieht im wesentlichen jetzt so aus:
Code: Alles auswählen

      $this->paginate['Immobilien'] = array(
        'limit' => 2,
         'conditions' => $conditions,
         'group' => 'Immobilien.objektnummer
      );
         
      $eintraege = $this->paginate('
Immobilien');
     
      $this->set('
Immobilien', $this->paginate('Immobilien'));


Im Model habe ich zwei Tabellen verbunden: anhaenge und freitexte was dann im Resultat für die Bestimmung der Anzahl Datensätze folgendes SQL-Statement ergibt:

Code: Alles auswählen

SELECT COUNT( * ) AS `count`
FROM `immobilien` AS `Immobilien`
LEFT JOIN `immobilienart` AS `Immobilienart` ON ( `Immobilien`.`immobilienart` = `Immobilienart`.`id` )
LEFT JOIN `anhaenge` AS `Anhaenge` ON ( `Anhaenge`.`objektnummer` = `Immobilien`.`objektnummer` )
LEFT JOIN `freitexte` AS `Freitexte` ON ( `Freitexte`.`objektnummer` = `Immobilien`.`objektnummer` )
WHERE `Immobilien`.`plz` LIKE "%"
AND `Immobilien`.`immobilienart` =2
GROUP BY `Immobilien`.`objektnummer`
 


Wer sich etwas mit dem Operator Count() beschäftigt, merkt schnell, was hier nun das Problem ist.
Für die, die nicht wissen, was bei Count passiert, eine kurze Erklärung: Count fügt eine zusätzliche Spalte an das Ergebnis. In dieser wird die Anzahl gleicher Datensätze je Zeile gezählt. Für MySQL ist das auch gut hier erklärt.
Das Problem ist also, bedingt durch den Join, habe ich jetzt folgendes Ergebnis, wenn ich das mal mit phpMyAdmin mache:
COUNT
4
4
7
5
6
5

Richtig wäre ist das Ergebnis 6. Man sieht: Count mit verbundenen Tabellen ist eine heikle Sache.

Was bräuchte ich? In meiner alten Anwendung hatte ich zwei SQL-Statements: Eines mit Count() und GroupBy und eines für die "normale" Selektion. Wenn ich im paginator mit recursive -1 arbeiten würde, hätte ich das richtige Ergebnis. Allerdings brauche ich die anhaenge im View.
Ich denke, dass das in Cake auch möglich sein muss. Allerdings finde ich nicht die Lösung.

Hat jemand eine Idee?

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: PaginationHelper

Beitragvon havanna » Mo 27. Okt 2008, 00:30

Hallo,

habe die Lösung gefunden :D

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: PaginationHelper

Beitragvon Alex » Mo 27. Okt 2008, 18:53

Wäre super wenn du die Lösung posten könntest. Dann müssen andere, welche das selbe Problem haben, das Rad nicht neu erfinden ;)
Alex
 
Beiträge: 120
Registriert: Di 13. Mai 2008, 13:39
Wohnort: Bremen
CakePHP-Version: 1.x.x
OS: OSX / Win 7 / Debian

Re: PaginationHelper

Beitragvon havanna » Mo 27. Okt 2008, 21:29

Hallo Alex,

siehe Tutorials.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN


Zurück zu Helper

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron