我在我的一个项目中使用 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/