2011-01-07 14 views
3

Ich habe hoch und niedrig gesucht und mehrere verschiedene Lösungen ausprobiert und ich kann nicht scheinen, es zur Arbeit zu bekommen. Grundsätzlich habe ich Produkte und Kategorien. Kategorien hat und gehört zu vielen Produkten und Produkten HABTM Kategorien. Sie sind offensichtlich in einer Join-Tabelle products_categories mit den Feldern id, product_id und category_id verknüpft.cakephp 1.3 paginating hattm verwandte Daten

Nach einem einfachen Full-Backen-Modelle Ansichten und Controller gebacken werden - einige Kategorien und Produkte hinzugefügt werden und ihre Beziehungen eingestellt sind, kann ich auf eine bestimmte Kategorie Ansichtsseite gehen und die vorgebackenen Ansicht zeigt Produkte, die damit verbunden sind Kategorie.

Allerdings gibt es ziemlich viele Produkte (und wird mehr sein) und ich habe Mühe zu erarbeiten, wie alle diese verwandten Daten paginate..als es nicht möglich ist, einfach alle Produkte in einer Kategorie aufzulisten (es könnte 100s oder mehr sein) Kann jemand helfen? Es scheint, es gibt einige unbeantwortete Themen zu dieser und verschiedenen anderen Lösungen, von denen ich nicht zur Arbeit kommen kann! Bitte helfen Sie!

+0

Nicht in Verbindung mit Ihrem Problem, um sicher zu sein, aber CakePHP Konvention zeigt an, dass Ihre 'products_categories' Tabelle sollte' categories_products' genannt werden – Stephen

+0

Ich verstehe nicht? Es heißt products_categories und scheint gut zu funktionieren. Welchen Unterschied würde die Benennung der Tabelle anders machen? –

+0

In der Dokumentation "Join-Tabellen, die in hasAndBelongsToMany (HABTM) verwendet werden, sollten die Beziehungen zwischen Modellen nach den Modelltabellen benannt werden, die sie in alphabetischer Reihenfolge (apples_zebras statt zebras_apples) verknüpfen." http://book.cakephp.org/view/903/Model-and-Database-Conventions Wenn Sie so vorgehen, wird der Kuchen mehr von seiner "Magie" anwenden und Sie davon abhalten, im Modell Code zu haben, der Ihnen sagt, an welchen Tisch benutzen. – Stephen

Antwort

3

CakePHP-Steuerungen haben built in pagination. Die Dokumentation ist gründlich, daher würde ich empfehlen, das zuerst zu lesen. Danach beantworte ich gerne alle Fragen, die Sie zu diesem Thema haben.

Ohne den spezifischen Code beteiligt zu wissen, hier ist ein einfaches Beispiel dafür, wie Ihre Modelldaten Paginieren:

class CategoryController extends AppController { 
    var $paginate = array(
     'Product' => array(
      'joins' => array(
       array(
        'table' => 'categories_products', // or products_categories 
        'alias' => 'CatFilter', 
        'type' => 'INNER', 
        'conditions' => array(
         'CatFilter.product_id = Product.id' 
        ) 
       ) 
      ), 
      'limit' => 10 
     ) 
    ); 

    function view ($category_id) { 
     $this->set(
      'products', $this->paginate(
       $this->Category->Product, array(
        'CatFilter.category_id' => $category_id 
       ) 
      ) 
     ); 
    } 
} 
+0

Ich habe den Seitenumbruchabschnitt gelesen, und ich kann nichts finden, das sich auf mein Problem bezieht. Ich werde es noch einmal lesen, aber gibt es da etwas besonderes, dass ich hier vermisse? danke –

+0

Hoppla. Ein fehlerhafter Abschnitt wurde behoben. Wenn du meine Methode bereits ausprobiert hast und es fehlgeschlagen ist, versuche es jetzt. – Stephen

+0

Das funktioniert! Ausgezeichnet! kleines Problem, die nächste Seite kann nicht geclickt werden, es geht von/categories/view/1/zu categories/view/page: 2 –

Verwandte Themen