mysql - cakephp 用于多个连接和聚合函数的结果集...即复杂查询

标签 mysql arrays cakephp-2.1

我在我的一个项目中使用 cakephp。我需要的是使用单个模型和单个数组输出来处理复杂的查询。因为我是 cakephp 的新手,所以我在这里陷入了非常糟糕的境地:

$rs = $this->User->query("
                SELECT  (wd.wajebaat_amt) as commited,
                SUM(pd.sila_waje) as paid, 
                (wd.wajebaat_amt-sum(pd.sila_waje)) as balance, 
                FROM wajebaat_details as wd
                LEFT JOIN waje_pay_details as pd ON (pd.waje_id=wd.waje_id) 
                WHERE wd.hof_id="123" and wd.year="2010"
                GROUP BY wd.waje_id");

print_r($rs); exit();

//将输出显示为

Array
(
    [0] => Array
        (
            [wd] => Array
                (
                    [commited] => 252000
                )

            [0] => Array
                (
                    [paid] => 253829
                    [balance] => -1829
                )

        )

)

//但是我需要遵循格式

Array
(
    [0] => Array
        (
            [wd] => Array
                (
                    [commited] => 252000
                    [paid] => 200000
                    [balance] => 52000
                )

        )

)

最佳答案

在cakephp 2.5中可以使用Hash(实用程序)方法format()将嵌套数组转换为字符串,在以前版本的cakephp中该方法是set(),

Hash::format(array $data, array $paths, $format)

示例:

$result = Hash::format($rs,array('{n}.wd.commited','{n}.wd.0.paid','{n}.wd.0.balance'),'%1$d,%2$d,%$d');

输出:

252000,2000000,52000

有关更多格式选项,请参阅 cook book of cakephp

关于mysql - cakephp 用于多个连接和聚合函数的结果集...即复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26017501/

相关文章:

Javascript 通过引用或值分配数组元素

javascript - 数组作为对象对象输出

CakePHP:为什么我的缓存文件在过期时会导致巨大的峰值?

sql - MySQL慢查询

mysql - 如何从数据库中的范围中选择列表

MySql - 从主表和第二个表创建总和

mysql - 在 Cakephp 2.2 上作为字符串返回的 Float、Decimal、Int mysql 字段

mysql - 将 MySQL 脚本移植到 MS SQL -> 同时进行数据分配和检索

arrays - 如何从 Swift 3 中的结构数组生成 JSON?

cakephp - 通知(8): session_start() at CakePHP 2. 2