CakePHP 3.x翻译行为:使用“读取所有翻译”;获得;

CakePHP 3.x翻译行为:使用“读取所有翻译”;获得;,cakephp,internationalization,cakephp-3.8,Cakephp,Internationalization,Cakephp 3.8,这本食谱描述了如何进行翻译,但它使用了find('translations')。它还讨论了如何使用。我希望通过使用get和包含功能将它们混合在一起,因为我已经在同时读取相关记录了 要加载联赛和所有相关部门及其翻译,此操作有效: $league = $this->Leagues->get($id, ['contain' => [ 'Divisions' => [ 'queryBuilder' => function (Query $q) {

这本食谱描述了如何进行翻译,但它使用了
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();
到目前为止,一切顺利。但是我也需要为联盟加载所有的翻译。这项工作:

$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();
但它会导致
angereloader::normalized
中的“错误:无法将闭包类型的对象用作数组”


我是否遗漏了一些明显的(或不太明显的?),或者这不是一个受支持的选项?

queryBuilder
是一个实际包含的选项,不能将其用作顶级键

您要查找的是
get()
方法的
finder
选项:

$league=$this->Leagues
->获取($id)[
“finder”=>“translations”,
“包含”=>[
“部门”=>[
'queryBuilder'=>函数(查询$q){
返回$q->find('translations');
},
],
]
])
->第一个();
另见


太简单了!谢谢我甚至没有想到<代码>获取<代码>可能有一个<代码>查找器>代码>选项。