0

プロジェクトを継承したばかりで、無限スクローラーのページネーションが引き続き正しく機能するように、コードを少し作り直す必要があります。

現在、コードはすべてのカテゴリとその製品、およびリストを取得しています。有効なリストがある製品を含むカテゴリのみが返されるように編集する必要があります。

最終的に機能したコードは次のとおりです。

   $catData = $this->find('all',array(
            'conditions' => array(
                'Indexer.type' => 'Category',
                'Listing.listing_id IS NOT NULL'
            ),
            'joins' => array(
                array('table' => 'peeka_product_category_link',
                    'alias' => 'Link',
                    'type' => 'LEFT',
                    'conditions' => array(
                        'Link.category_id = Category.category_id'
                    )
                ),
                array('table' => 'peeka_products',
                    'alias' => 'Product',
                    'type' => 'LEFT',
                    'conditions' => array(
                        'Product.product_id = Link.product_id'
                    )
                ),
                array('table' => 'peeka_listings',
                    'alias' => 'Listing',
                    'type' => 'LEFT',
                    'conditions' => array(
                        'Listing.product_id = Product.product_id',
                        'Listing.listing_end_date >=' => $date, 
                        'Listing.listing_start_date <=' => $date,
                        "Listing.listing_status = 'Active'"
                    )
                ),
            ),
            'order' => 'Category.category_name ASC',
            'limit' => $set_limit,
            'fields' => array('Category.category_id, Category.category_name, Indexer.url'),
            'group' => 'Category.category_id',
            'recursive' => 0
        ));

編集:デイブのおかげでこれは現在機能していて、将来の参考のために投稿したかっただけです。多分それは他の誰かを助けるでしょう。

4

1 に答える 1

1

「...アクティブなリストがある製品を含むカテゴリのみが返されます。」

「...これらの3つのクエリを1つに結合して、最初のCategory-> find()関数がすべての有効なデータを取得する方法。」

データを取得し、関連するモデルのフィールドに基づいてデータを制限するには、CakePHPのJOINを使用する必要があります。

コードを記述せずにそれ以上の質問に答えるのは難しいので、JOINを試してから、戻ってきて、問題がある場合は別のより具体的な質問をしてください。

于 2013-03-26T20:31:06.210 に答える