php - 如何在 yii2 mysql 中提取这些数据

标签 php mysql yii2

要提取的数据是:

->select('ingreso.idingreso', 'ingreso.fecha_hora', 'persona.nombre', 'ingreso.tipo_comprobante', 'ingreso.serie_comprobante', 'ingreso.num_comprobante', 'ingreso.impuesto', 'ingreso.estado', 'SUM("ingreso.cantidad*precio_cantidad") AS total')

表中模型的关系:

表“ingreso”

   public function relations()
    {
        return array(
            'didingreso' => array(self::HAS_MANY,'detalle_ingreso', 'idingreso'),
            );
    }

表“detalle_ingreso”

 public function relations()
    {
        return array(
            'ingres' => array(self::HAS_ONE,'ingreso', 'idingreso'),
            'articulo' => array(self::HAS_ONE,'articulo', 'idarticulo'),
            );
    }

表“关节”

 public function relations()
{
    return array(
        'idproveed' => array(self::HAS_MANY,'ingreso', 'idproveedor'),          
        );
}

表“角色”

public function relations()
{
    return array(
        'idproveed' => array(self::HAS_MANY,'ingreso', 'idproveedor'),          
        );
}

没有我尝试这样做的关系:

 $table = Ingreso::find()
                ->innerJoinWith('persona', 'ingreso.idproveedor = persona.idpersona')
                ->innerJoinWith('detalle_ingreso', 'ingreso.idingreso = detalle_ingreso.idingreso')
                ->select('ingreso.idingreso', 'ingreso.fecha_hora', 'ingreso.nombre', 'ingreso.tipo_comprobante', 'ingreso.serie_comprobante', 'ingreso.num_comprobante', 'ingreso.impuesto', 'ingreso.estado', 'SUM("detalle_ingreso.cantidad*detalle_ingreso.precio_venta") AS total')
                ->andWhere(["estado" => 'A'])                                               
                ->orderBy(['ingreso.idingreso' => SORT_DESC])
                ->groupBy(['ingreso.idingreso', 'ingreso.fecha_hora', 'ingreso.nombre', 'ingreso.tipo_comprobante', 'ingreso.serie_comprobante', 'ingreso.num_comprobante', 'ingreso.impuesto', 'ingreso.estado']);

这些是我的表格: tables

显然,抛出我的错误是在尝试访问结果时,如下所示: error

感谢您的帮助。

最佳答案

如果您使用 Yii2,您应该使用 yii2 activeRecord 中的关系语句。

Here the documentation

编辑:

您应该单独创建所需的所有关系,然后使用 with 创建混合查询

您的型号:

public function getIngreso(){
    return $this->hasMany(Ingreso::className(), ['id' => 'id_ingreso']);
}

public function getDetalleingreso(){
    return $this->hasMany(DetalleIngreso::className(), ['id' => 'id_detalleingreso']);
}

在您的 Controller 中:

$results = $model->find()->select('foo')->with(['ingreso', 'detalleingreso'])->all();

关于php - 如何在 yii2 mysql 中提取这些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880641/

相关文章:

updating - Yii2:使用查询生成器更新字段

join - 如何在 Yii2 中使用 join 和 indexBy?

php - Laravel 中的“播种”是什么意思?

javascript - 使用 AngularJS/AJAX 提交表单

php - zip_open();在 PHP 5.2.8 上未定义

php - 错误 2002 (HY000) : Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13) Ubuntu

php - 无法从AWS EC2中的phpmyadmin获取数据

php - 使用 Yii2 扩展通过 swiftmailer 发送电子邮件

php - 使用仅用于计数的 where 子句获取不同行及其记录计数

c# - 如何在 MySQL 文档存储查找表达式中转义字符串?