php - 我如何通过另一个相关表 Yii CDbCriteria 过滤查询?

标签 php mysql yii

这是我的 mysql 表结构。 enter image description here

我想要这样的用户订购产品数量和金额的总和。 enter image description here

我的代码在这里,但不是真的。

<?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/

相关文章:

mysql 使用 BETWEEN 在两个日期范围之间进行选择

yii - 如何将Yii 1.x升级到Yii 2.0

phpunit - webdriver-test 不可用

php - 如何将参数传递给 yii 框架 Controller 中的访问规则表达式

php - zf2 tablegateway 按列名选择列

php - 登录PHP和Mysql

php - 在php中将数据库导出为pdf文件

php - 使用另一个表中的数据从表中选择数据

php - 如何使用 SUM(CASE) 和日期间隔来选择用户及其金额列表和总金额

php - Laravel 4 数据库配置 $_ENV