[英]How can i filter query by another related table Yii CDbCriteria?
This my mysql tables structure. 这是我的mysql表结构。
I want sum of ordered products quantity and amount by a user like this. 我想要这样的用户的订购产品数量和金额的总和。
My codes is here, but is not true. 我的代码在这里,但不是真的。
<?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);
?>
If u have good relations in models and same names u can try someth similar to (but i started from Orders not from Products - u can start from Products too) : 如果你在模特和同名中有良好的关系你可以尝试类似的东西(但我从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: U need too add attributes to models: public $amount_sum and public $quantity_sum. PS:你需要为模型添加属性:public $ amount_sum和public $ quantity_sum。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.