我的代码在这里,但不是真的。
<?php
$criteria = new CDbCriteria;
$criteria->with = 'orders';
$criteria->together = true;
if(!empty($_GET['email'])){
$email = CHtml::encode($_GET['email']);
if($user = Users::model()->findByAttributes(array('email'=>$email))){
$criteria->addSearchCondition('orders.user_id', $user->id);
}
}
$products = Products::model()->findAll($criteria);
?>
答案 0 :(得分:0)
如果你在模特和同名中有良好的关系你可以尝试类似的东西(但我从Orders开始而不是从产品开始 - 你也可以从产品开始):
$criteria = new CDbCriteria;
$criteria->select = 'SUM(t.amount) as amount_sum, SUM(oP.quantity) as quantity_sum, p.title, p.code';
$criteria->with = ['orderProducts'=>['alias'=>'oP'], 'orderProducts.Products'=>['alias'=>'p']];
$criteria->together = true;
$criteria->group = 't.id, oP.product_id, p.id';
if(!empty($_GET['email'])){
$email = CHtml::encode($_GET['email']);
if($user = Users::model()->findByAttributes(array('email'=>$email))){
$criteria->addSearchCondition('t.user_id', $user->id);
}
}
$orders = Orders::model()->findAll($criteria);
PS:你需要为模型添加属性:public $ amount_sum和public $ quantity_sum。