我试图摆脱CakePHP中find方法返回的结果数组中的冗余模型名称。就像现在一样,如果我要执行类似$ results = $ this-> Model-> find('all')的操作,我必须通过$ results [Model] [fieldName]而不是$ $结果[fieldName的]。
我知道在数组中使用模型名称有好处,但我正在尝试构建一个api所以我需要对数组进行json编码。随着模型名称的包含,我得到了一些可怕的东西,如:
[{"Model":{"field":"blah","field":"blah"}},{"Model":{"field":"blah","field":"blah"}}]
我想要更优雅的东西:
[{"field":"blah","field":"blah"},{"field":"blah","field":"blah"}]
有什么想法吗?
答案 0 :(得分:20)
在您的控制器中,不是序列化查找结果,而是序列化更深层次。
假设CakePHP 2:
$things = $this->Thing->find('all');
$things = Set::extract('/Thing/.', $things);
现在,您的结果应该没有JSON中的额外级别。
另一种冗长的方法是for loop
结果:
foreach ($things as $k => &$v) {
$v = $v['Thing']
}
之后,你的$物品将删除额外的钥匙。
答案 1 :(得分:2)
对于Cake的更高版本,请使用$ things = Set :: extract($ things,'{n} .Thing');