cakephp 3,通过多对多关系查找

cakephp 3,通过多对多关系查找,php,cakephp,many-to-many,cakephp-3.0,Php,Cakephp,Many To Many,Cakephp 3.0,我正在开发一个简单的网店,在那里我有一个与产品有多对多关系的表大小。我想找到特定尺寸的所有产品: /按尺寸/XL列出的产品,其中我的控制器和操作是: public function productsBySize($size){ $slug = $this->request->session()->read('Category.slug'); $gender = $this->request->session()->read('

我正在开发一个简单的网店,在那里我有一个与产品有多对多关系的表大小。我想找到特定尺寸的所有产品: /按尺寸/XL列出的产品,其中我的控制器和操作是:

 public function productsBySize($size){
        $slug = $this->request->session()->read('Category.slug');
        $gender = $this->request->session()->read('Category.gender');
        $this->paginate = [
            'contain' => ['Categories', 'Taxes', 'Manufactures', 'Promotions', 'ProductImages', 'Sizes'],
            'maxLimit' => 9,
            'order' => ['price'=>'ASC']
        ];
        $sub = $this->buildTree($this->Categories->find()->toArray());
        $categories = $this->treeToHtml($sub);

        $products = $this->paginate($this->Products->find()->where([
            'Categories.slug'=>$slug,
            'gender'=>$gender,
            **'Sizes.name'=>$size**
        ]));
        if($slug == 'promotion'){
            $products = $this->paginate($this->Products->find()->where([
                'promotion_id >'=>0,
                'gender'=>$gender,
                'Sizes.name'=>$size
            ]));
        }
        if($slug == 'all'){
            $products = $this->paginate($this->Products->find('all')->where([
                'gender'=>$gender,
                'Sizes.name'=>$size
            ]));
        }
        $sizes = $this->Sizes->find('all');
        $this->set(compact('products', 'slug', 'categories', 'sizes'));
        $this->render('products', 'Webshop.default', ['products', 'categories', 'sizes']);
    }
我的联接表是产品大小,我使用的是标准约定。 'size.name'=>$size不起作用


有什么帮助吗?Thx

答案与此类似