【发布时间】:2020-07-09 11:59:28
【问题描述】:
食谱描述了如何使用retrieve all translations for an entity,但它使用的是find('translations')。它还讨论了如何retrieve all translations for associations。我希望使用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();
但它会导致来自EagerLoader::normalized 的“错误:无法使用闭包类型的对象作为数组”。
我是否遗漏了一些明显(或不那么明显?)的东西,或者这不是一个受支持的选项?
【问题讨论】:
标签: cakephp internationalization cakephp-3.8