我的代码在这里,但不是真的。
<?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);
?>
最佳答案
如果你在模型和同名方面有良好的关系,你可以尝试类似的东西(但我从订单而不是产品开始 - 你也可以从产品开始):
$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。
关于php - 我如何通过另一个相关表 Yii CDbCriteria 过滤查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38336174/