2017-05-10 10 views
0

Products belongsToMany CategoriesCategories hasMany Productsの中にある私のProductビューすべてのカテゴリのリストを表示していますが、ページ番号を付けたり、これらの結果を制限したりします。関連するレコードをページ付けする方法は?

ProductsControllerに私の現在のコードは次のとおりです。

$product = $this->Products 
    ->findBySlug($slug_prod) 
    ->contain(['Metas', 'Attachments', 'Categories']) 
    ->first(); 

$this->set(compact('product')); 

私は私が何かをページ付けする$this->paginate()を設定する必要がありますが、私はそれが製品内部のカテゴリをページ付けする作業を取得することはできません知っています。皆さんが私を理解できることを願っています。

UPDATE:現在、私はこの起こっている:

$product = $this->Products->findBySlug($slug_prod)->contain([ 
       'Metas', 
       'Attachments', 
       'Categories' => [ 
       'sort' => ['Categories.title' => 'ASC'], 
       'queryBuilder' => function ($q) { 
        return $q->order(['Categories.title' => 'ASC'])->limit(6); 
       } 
       ] 
      ])->first(); 

を制限作品が、私はページネータは、ページ付けの関連付けをサポートしていない、あなたが持っているよまだ

+0

"別のコントローラ" は、このいずれかを行うには何を持っていない、私にはそれが聞こえますあたかも皆さんがページングを伴うレコード関連データを表示することですか? – ndm

+0

私はあなたが正しいと思う、私は自分のコードを変更した、もう一度確認できますか? – noeyeat

答えて

1

をページ付けする方法がわかりません別のクエリに手動で関連レコードを読み、その1つのページ番号を付け、この線に沿って何かする:

$product = $this->Products 
    ->findBySlug($slug_prod) 
    ->contain(['Metas', 'Attachments']) 
    ->first(); 

$categoriesQuery = $this->Products->Categories 
    ->find() 
    ->matching('Products', function (\Cake\ORM\Query $query) use ($product) { 
     return $query->where([ 
      'Products.id' => $product->id 
     ]); 
    }); 

$paginationOptions = [ 
    'limit' => 6, 
    'order' => [ 
     'Categories.title' => 'ASC' 
    ] 
]; 

$categories = $this->paginate($categoriesQuery, $paginationOptions); 

$this->set(compact('product', 'categories')); 

はその後、あなたのビューテンプレートに、あなたのを表示することができますおよび別個にページ番号$categoriesとして通常通り使用してください。

も参照してください

+0

SQLSTATE [42S22]:列が見つかりません:1054不明な列 'Product.id' in on clause ' – noeyeat

+0

SQLが 'Product'を探しています.id =:c0 AND Product.id = ProductsCategories.product_id) '、第2のものは正しいですが、最初のものは間違っていると思います。なぜなら条件がないために理由が分かりません。 – noeyeat

+0

タイプミスでした。 Product.idの代わりにProducts.idと言ったようなはずです。どうもありがとうございました! – noeyeat

関連する問題