Поваренная книга описывает, как получить все переводы для сущности , но она использует find('translations')
. Также обсуждается, как получить все переводы для ассоциаций . Я надеюсь смешать их, используя get
и функциональность сдерживания, потому что я уже читаю связанные записи одновременно.
Чтобы загрузить лигу и все связанные подразделения с их переводами, это работает :
$league = $this->Leagues->get($id, ['contain' => [
'Divisions' => [
'queryBuilder' => function (Query $q) {
return $q->find('translations');
},
],
]]);
Пока все хорошо. Но мне нужно загрузить все переводы для лиги. Это работает:
$league = $this->Leagues->find('translations')->where(['Leagues.id' => $id])->contain([
'Divisions' => [
'queryBuilder' => function (Query $q) {
return $q->find('translations');
},
],
])->first();
, но это несовместимо со всем другим моим кодом для чтения одной сущности, которая всегда использует get
. Я попытался это:
$league = $this->Leagues->get($id, ['contain' => [
'queryBuilder' => function (Query $q) {
return $q->find('translations');
},
'Divisions' => [
'queryBuilder' => function (Query $q) {
return $q->find('translations');
},
],
]])->first();
, но это приводит к «Ошибка: невозможно использовать объект типа Closure как массив» из EagerLoader::normalized
.
Я что-то упускаю из виду (или не так очевидно) ?), или это не поддерживаемая опция?