要提取的数据是:
->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']);
感谢您的帮助。
最佳答案
如果您使用 Yii2,您应该使用 yii2 activeRecord 中的关系语句。
编辑:
您应该单独创建所需的所有关系,然后使用 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/