Как предотвратить сведение Cakephp ассоциаций уровня 1

Предположим, у меня есть следующие модели. Пользователи, сообщения и комментарии. У пользователей много сообщений. Посты имеют много комментариев. Если я попробую следующее в контроллере сообщений:

$post = $this->Post->find('first', array('contain' => array('Comment')));

Я получаю массив, который выглядит так:

array(
    'Post' => array(
        'postfield1',
        'postfield2',
        'etc'
    ),
    'Comment' => array(
        [0] => array('firstcommentfield1', 'etcfields'),
        [1] => array('secondcommentfield1', 'etcfields'),
    )
)

Но если я запущу следующее из контроллера Users,

$user = $this->User->find('first', array('contain' => array('Post' => array('Comment'))));

а потом смотрю первый пост для пользователя $user['Post'][0] получаю следующее

array(

    'Post' => array(
        'postfield1',
        'postfield2',
        'etc'
        'Comment' => array(
            [0] => array('firstcommentfield1', 'etcfields'),
            [1] => array('secondcommentfield1', 'etcfields'),
        )
    ),
)

Это затрудняет написание функций, которые воздействуют на сообщения без предварительного форматирования вручную.

У кого-нибудь есть обходной путь?


person dragmosh    schedule 24.10.2017    source источник
comment
Вы пытаетесь получить тот же результат, что и выше, или пытаетесь сгладить массив?   -  person odan    schedule 25.10.2017
comment
Я бы предпочел, чтобы результаты вообще не были сглажены, но я не возражаю в любом случае, если это соответствует ассоциациям уровня 1 и ниже. Прямо сейчас я работаю над этим, пишу функции, предполагающие неплоскую версию и удаляющие выравнивание ассоциаций уровня 1.   -  person dragmosh    schedule 25.10.2017
comment
Нашел старый вопрос с той же проблемой, но на него также нет принятого ответа: stackoverflow.com/questions/10159465/   -  person dragmosh    schedule 25.10.2017