Was ich versuche zu erreichen, ist ziemlich einfach, aber ich werde es nicht schaffen, den richtigen Weg zu finden.CakePHP 3 Ergebnis paginieren
Ich habe eine Produkttabelle in meiner Datenbank. Jedes Produkt hat viele Bilder und Farben und gehört zu einer oder mehreren Kategorien.
Ich versuche eine Aktion zu erstellen, die die ID einer Kategorie empfängt und die Produkte, die sie enthält, paginiert. Diese
ist, was mein Code wie jetzt aussieht, mit den beiden unterschiedlichen Ansätze, die ich versucht habe:
$paginatorQuery = $this->Categories->Products->find('all', [
'contain' => [
'Categories' => [
'conditions' => [
'category_id' => $categoryId
]
],
'Colors',
'Images'
],
'conditions' => $conditionArray,
'order' => [
$session->read('productSort.field') => $session->read('productSort.direction')
],
]);
$catProd = $this->Categories->get($categoryId, [
'contain' => [
'Products' => [
'Colors',
'Images',
'conditions' => $conditionArray,
'sort' => [
$session->read('productSort.field') => $session->read('productSort.direction')
],
]
],
]);
// $catProd = $catProd->products;
$products = $this->paginate($paginatorQuery);
Die Variable $paginatorQuery
nicht richtig filtern (ich wusste, dass es nicht, weil, wie fehlerhaft, dass Logik ist, aber beschlossen, es nur für den Fall zu versuchen), stattdessen gibt es, was zu erwarten wäre (alle vorhandenen Produkte, und in dem Fall, dass das Produkt der Kategorie mit der entsprechenden ID gehört, enthält das Produkt).
Die kommentierte Zeile $catProd = $catProd->products
weist der Variablen $catProd
die gewünschte Ergebnismenge zu, aber ich kann das nicht paginieren. Ich denke daran, eine manuelle Paginierung zu implementieren, indem ich Limits zuweise und mit dieser Abfrage beginne, aber ich denke, da muss etwas fehlen, das mir den Ärger ersparen würde.
Danke!
Danke, das hat den Trick gemacht. Wenn ich mich richtig erinnere, hatte ich vorher versucht, die Übereinstimmung zu verwenden, aber die Anweisung use verpasst, so dass '$ categoryId' nicht definiert wurde. – porjolovsky