我在sizes
和toppings
之间存在多对多关系,并且有一个包含额外字段的表格toppings_sizes
现在我只想从toppings_sizes
中选择一个字段,目前我的查询提供了所有3个表中的所有可用字段。
$rs = $this->Toppings
->find()
->contain(['Sizes'])
->where(['category_id' => $categoryId]);
debug( json_encode($rs, JSON_PRETTY_PRINT));
我这可以只需要2个字段Sizes.name
和ToppingsSizes.price
答案 0 :(得分:0)
一种方法是添加->select
来指定字段:
$rs = $this->Toppings
->find()
->select(['Sizes.name', 'ToppingsSizes.price'])
->contain(['Sizes'])
->where(['category_id' => $categoryId]);
答案 1 :(得分:0)
$rs = $this->Toppings
->find()
->contain([
'Sizes' => function ($q) {
return $q
->select(['name']);
},
'ToppingsSizes' => function ($q) {
return $q
->select(['price']);
}
]);
->where(['category_id' => $categoryId]);
通过使用此代码,您可以从表中获得所需的字段。
答案 2 :(得分:0)
您需要将关系模型名称传递给contain()
方法数组,该数组是结果数据中所需的模型实体。
$rs = $this->Toppings
->find()
->select(['Sizes.name', 'ToppingsSizes.price'])
->contain(['Sizes','ToppingsSizes'])
->where(['Toppings.category_id' => $categoryId]);