CakePHP中的冗余ModelName查找结果

sho*_*ang 11 arrays json cakephp

我试图摆脱CakePHP中的find方法返回的结果数组中的冗余模型名称.就像现在一样,如果我要做一些像$ results = $ this-> Model-> find('all')的东西,我将不得不通过$ results [Model] [fieldName]而不是$ results来访问结果字段[fieldName的].

我知道在数组中使用模型名称有好处,但我正在尝试构建一个api所以我需要对数组进行json编码.随着模型名称的包含,我得到一些可怕的东西,如:

[{"Model":{"field":"blah","field":"blah"}},{"Model":{"field":"blah","field":"blah"}}]
Run Code Online (Sandbox Code Playgroud)

我想要一些更优雅的东西:

[{"field":"blah","field":"blah"},{"field":"blah","field":"blah"}]
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Pre*_*ant 20

在您的控制器中,不是序列化查找结果,而是更深层次地序列化.

假设CakePHP 2:

$things = $this->Thing->find('all');
$things = Set::extract('/Thing/.', $things);
Run Code Online (Sandbox Code Playgroud)

现在,您的结果应该没有JSON中的额外级别.

另一种冗长的方法是for loop结果:

foreach ($things as $k => &$v) {
    $v = $v['Thing']
}
Run Code Online (Sandbox Code Playgroud)

在那之后,你的$东西将删除额外的密钥级别.