Проблема в том, что при использовании $ this-> Model-> find () вы передаете каждую модель и связанную модель в этой форме:
Array
(
[0] => Array
(
[MainModel] => Array
(
[id] => 1
[name] => foo
)
[AssocModelOne] => Array
(
[id] => 23
[name] => bar
)
[AssocModelTwo] => Array
(
[id] => 87
[name] => baz
)
)
)
Анализатор XML не хочет видеть числа в качестве верхнего уровня массива. Но он также хочет видеть только один элемент верхнего уровня. Когда вы передаете более одного, как показано ниже, вы получаете ошибку 500 «Неверный ввод»:
Array
(
[MainModel] => Array
(
[id] => 1
[name] => foo
)
[AssocModelOne] => Array
(
[id] => 23
[name] => bar
)
[AssocModelTwo] => Array
(
[id] => 87
[name] => baz
)
)
Этот массив НЕ будет работать. Чтобы заставить его работать таким образом, вы ДОЛЖНЫ поместить данные в другой массив, который считается «верхним уровнем», прежде чем его использовать, иначе это не удастся. Так это должно выглядеть больше как:
Array
(
[ModelData] => Array
(
[MainModel] => Array
(
[id] => 1
[name] => foo
)
[AssocModelOne] => Array
(
[id] => 23
[name] => bar
)
[AssocModelTwo] => Array
(
[id] => 87
[name] => baz
)
)
)