按型号结果

时间:2016-05-24 05:35:12

标签: cakephp-3.x

我有这个问题:

$data = TableRegistry::get('Dogs');
$data = $data->find('all')
    ->contain(['Foods'])
    ->select(['name','breed','sex','Foods.name','Foods.quality'])
    ->last()
    ->toArray();

返回此结果:

[
    'name' => 'Dug',
    'breed' => 'Golden Retriever',
    'sex' => 'Male',
    'food' => [
        'name' => 'Best Food',
        'quality' => 'A+'
     ]
]

我想知道是否有任何方法可以使CakePHP返回结果:

[
    'dog' => [
        'name' => 'Dug',
        'breed' => 'Golden Retriever',
        'sex' => 'Male'
    ],
    'food' => [
        'name' => 'Best Food',
        'quality' => 'A+'
     ]
]

我该怎么做?我很确定这很简单,但我无法理解。

2 个答案:

答案 0 :(得分:0)

也许是这样的:

$data => [
    'dog' => [
        'name' => $dog->name,
        'breed' => $dog->breed,
        'sex' => $dog->sex
        ],
    'food' => $dog->foods
];
$this->set('data', $data);

答案 1 :(得分:0)

所以关注Salines'发布后,我决定构建一些快速且易于使用的内容,因为内容比我发布的示例更具动态性。

$data = TableRegistry::get($this->table);
$data = $data->find()
    ->contain($associated)
    ->select($this->data_fields)
    ->last()
    ->toArray();
$main = strtolower(Inflector::singularize($this->table));
$data[$main] = [];
foreach ($data as $key => $value) {
    if(!is_array($value)) {
        $data[$main][$key] = $value;
        unset($data[$key]);
    }
}