模型结果

Result by model

我有这个问题:

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

它 return 这个结果:

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

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

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

我该怎么做?我很确定这很简单,但我想不通。

可能是这样的:

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

因此,在 Salines 的 post 之后,我决定构建一些快速且易于使用的东西,因为内容比我 post 编辑的示例更加动态。

$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]);
    }
}