gpt4 book ai didi

php - Yii:STAT 与条件的关系

转载 作者:行者123 更新时间:2023-11-29 03:30:28 24 4
gpt4 key购买 nike

在我的 Yii 项目中,我有 OrderProductOrderProduct 模型,它们相互关联。为了统计某个时间段内销售的产品,我在Product model中添加了如下关系:我在 Yii 项目中有以下关系:

...
'orderProductsCount' => array(self::STAT, 'OrderProduct', 'product_id', 'select' => 'SUM(quantity)'),
'orderProductsAmount' => array(self::STAT, 'OrderProduct', 'product_id', 'select' => 'SUM(total)'),
...

整体数据正确返回。但是,当我尝试获取特定时间段内的订单数据时 - 我得到的数字与总数相同(一直售出)。

我尝试在纯 MySQL 中做同样的事情 - 这是描述我需求的查询:

SELECT product.id,  `order`.added, COUNT( order_product.product_id ) , SUM( order_product.total ) 
FROM product
LEFT JOIN order_product ON order_product.product_id = product.id
LEFT JOIN `order` ON `order`.id = order_product.order_id
WHERE `order`.added > "2015-01-10"
GROUP BY product.id

但我不知道如何用 Yii 方式表达...请帮助我。

附言。尝试在关系中添加条件,如下所示:

'orderProductsAmount' => array(self::STAT, 'OrderProduct', 'product_id', 'select' => 'SUM(total)', 'condition' => 'orders.added < "2015-01-10"'),

收到错误,因为条件在相关表上,而不是在产品上。

最佳答案

由于 with 未在 CStatRelation 中定义,您必须通过 with 语句提供条件 as

你在产品模型中的关系为

public function relations() {
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'order' => array(self::MANY_MANY, 'Order', OrderProduct::model()->tableName().'(product_id,order_id)'),
'amount'=>array(self::STAT, 'OrderProduct', 'product_id','select' => 'sum(total)'),
'total'=>array(self::STAT, 'OrderProduct', 'product_id','select' => 'sum(product_id)'),
);
}

和你的条件 findAll()

$model= Product::model()->with(array(
'order' => array(
'alias' => 'o',
'condition' => 'o.added > :date',
'params' => array(':date' => '2015-06-01')
),
'amount' => array(),
'total' => array()
))->findAll();

CVarDumper::dump($model,10,true);

关于php - Yii:STAT 与条件的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31320935/

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