Содержимое CakePHP 2.0, возвращающее неожиданный результат

У меня есть следующий класс и связанная структура базы данных

class OrganisationAccount
belongsTo Account
belongsTo Organisation

class Account
hasOne User

class Organisation
belongsTo Account

class User
belongsTo Account

Затем я выполняю поиск всех с использованием CakePHP find со следующей настройкой —

$OrganisationAccount->Behaviors->load('Containable');
$records = $OrganisationAccount->find(
'all',[
'fields'=>[
$OrganisationAccount->name.'.status',
'Account.email_address',
'Account.last_login',
],
'conditions'=>[
$OrganisationAccount->name.'.organisation_id'=>57
],
'contain'=>[
'Account'=>[
'User'
]
]
]
);

Теперь, если я выполню поиск, используя приведенное выше, я получу следующий результат —

Array
(
[0] => Array
(
[OrganisationAccount] => Array
(
[status] => REGISTERED
)

[Account] => Array
(
[email_address] => pdatar@checkvault.com.au
[last_login] => 2019-01-13 20:13:18
[id] => 44
[User] => Array
(
[id] => 32
[uuid] => 5c3814fc-2868-423f-9242-45b4cbdd56cb
[created] => 2019-01-11 04:01:00
[modified] => 2019-01-11 04:01:00
[account_id] => 44
[first_name] => John
[last_name] => Individual
[gender] => Not specified
[date_of_birth] =>
[display_picture] =>
[mobile] =>
[full_name] => John Individual
)

)

)

)

Что я и ожидаю.

Но если я поставлю поля Account над полями OrganisationAccount в массиве полей в поиске,

$OrganisationAccount->Behaviors->load('Containable');
$records = $OrganisationAccount->find(
'all',[
'fields'=>[
'Account.email_address',
'Account.last_login',
$OrganisationAccount->name.'.status'
],
'conditions'=>[
$OrganisationAccount->name.'.organisation_id'=>57
],
'contain'=>[
'Account'=>[
'User'
]
]
]
);

Я получаю следующий результат —

Array
(
[0] => Array
(
[Account] => Array
(
[email_address] => pdatar@checkvault.com.au
[last_login] => 2019-01-13 20:13:18
[id] => 44
[Account] => Array
(
[email_address] => pdatar@checkvault.com.au
[last_login] => 2019-01-13 20:13:18
[id] => 44
[User] => Array
(
[id] => 32
[uuid] => 5c3814fc-2868-423f-9242-45b4cbdd56cb
[created] => 2019-01-11 04:01:00
[modified] => 2019-01-11 04:01:00
[account_id] => 44
[first_name] => John
[last_name] => Individual
[gender] => Not specified
[date_of_birth] =>
[display_picture] =>
[mobile] =>
[full_name] => John Individual
)

)

)

[OrganisationAccount] => Array
(
[status] => REGISTERED
)

)

)

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

Массив find генерируется автоматически.

Это ошибка в CakePHP или я что-то делаю неправильно? Любая помощь приветствуется.

0

Решение

Если у вас есть много ко многим отношениям OrganizationAccount между Organizations а также Accounts, затем Organization belongsTo Account портит manyToMany,

0

Другие решения

Других решений пока нет …