根据 CakePHP BelongsToMany 约定,我有两个表products
,product_categories
它们通过第三个表关联(编辑:这些关联是在和中建立的)。我想生成一个产品类别列表,使用最畅销产品的图像来代表每个类别。products_categories_products
ProductsTable.php
ProductCategoriesTable.php
我可以使用以下功能实现我想要的结果:
public function findImages(Query $query, array $options) {
$query->select([
'ProductCategories.id',
'ProductCategories.name',
'ProductCategories__image' => '(SELECT Products.image
FROM product_categories_products AS ProductCategoriesProducts
LEFT JOIN products AS Products
ON ProductCategoriesProducts.product_id = Products.id
WHERE ProductCategoriesProducts.product_category_id = ProductCategories.id
ORDER BY Products.turnover DESC
LIMIT 1)'
])->where([
'ProductCategories.name <>' => 'Unsorted'
])->order([
'ProductCategories.name' => 'asc'
]);
return $query;
}
这是可以接受的,还是有一种更轻松的方式来实现我的目标?我真的找不到任何关于在 CakePHP 3 中制作子查询的主题。经过几个小时的挫折后,我偶然发现了上述解决方案。任何建议表示赞赏!