Cakephp 3:belongsToMany包含或匹配条件?

时间:2016-05-23 09:49:42

标签: cakephp-3.x

我的数据库部分看起来像database part

类别使用树行为。

如何获得当前类别的制造商(生产商)产品? 我尝试了包含和匹配,但我收到了没有相关产品的重复数据或生产者名称。

编辑:

$query = $this->Producers->find()->matching('Products.Categories',
    function ($q) {
        return $q->where(['Categories.id' => 18]); 
    }
);

结果:

Producent: Canon
-------------------------------------------
| ID | Name        | Barcode              |
-------------------------------------------
| 1  | EOS 1000D   |                      |
-------------------------------------------
| 18 | Camera      |                      |
-------------------------------------------
| 23 | 18          |                      |
-------------------------------------------

第一行(id = 1)这就是我需要的。 现在我必须从结果中删除: 第二行(id = 18)这是表类别中的类别ID, thrid row(id = 23) - 来自Products_Categories表。

1 个答案:

答案 0 :(得分:1)

完成。有工作查询:

$query = $this->Producers->find()
        ->select(['Producers.id','Producers.name', 'Products.id',   'Products.name'])
        ->matching(
            'Products.Categories', function ($q) use ($categoryId){
                return $q->where(['Categories.id' => $categoryId]);
            }
        );