gpt4 book ai didi

cakephp - CakePHP 3 中的子查询?

转载 作者:行者123 更新时间:2023-12-02 16:45:00 26 4
gpt4 key购买 nike

我有两个表 productsproduct_categories,根据 CakePHP BelongsToMany 约定,它们通过第三个表 products_categories_products 关联(编辑:这些关联在 ProductsTable.phpProductCategoriesTable.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 中制作子查询的主题。经过几个小时的挫折后,我偶然发现了上述解决方案。任何建议表示赞赏!

最佳答案

感谢用户 ndm_yesterday 的链接,我生成了以下解决方案:

public function findImages(Query $query, array $options) {
$this->hasMany('ProductCategoriesProducts');

$subquery = $this->ProductCategoriesProducts->find('all')->select([
'Products.image'
])->join([
[
'table' => 'products',
'alias' => 'Products',
'type' => 'LEFT',
'conditions'=> [
'ProductCategoriesProducts.product_id = Products.id'
]
]
])->where([
'ProductCategoriesProducts.product_category_id = ProductCategories.id'
])->order([
'Products.turnover' => 'DESC'
])->limit(1);

$query->select([
'ProductCategories.id',
'ProductCategories.name',
'ProductCategories__image' => $subquery
])->where([
'ProductCategories.name <>' => 'Unsorted'
])->order([
'ProductCategories.name' => 'asc'
]);

return $query;
}

关于cakephp - CakePHP 3 中的子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33884603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com