Internationalization TranslateBehavior不接受默认语言环境中的默认字段

Internationalization TranslateBehavior不接受默认语言环境中的默认字段,internationalization,cakephp-3.0,behavior,Internationalization,Cakephp 3.0,Behavior,我使用的是CakePHP3.4,我将其用于一个双语言网站,其中西班牙语es是默认语言环境。我有一个MangaTable,它为field slug实现了TranslateBehavior,我正在尝试查询它,如下所示: $manga = $this->Mangas->find() ->select([ 'id', 'nombre' ]) ->where([$this->Mangas->translationF

我使用的是CakePHP3.4,我将其用于一个双语言网站,其中西班牙语es是默认语言环境。我有一个MangaTable,它为field slug实现了TranslateBehavior,我正在尝试查询它,如下所示:

$manga = $this->Mangas->find()
    ->select([
        'id',
        'nombre'
    ])
    ->where([$this->Mangas->translationField('slug') => $slug])
    ->firstOrFail();
关键是,$this->Mangas->translationField'slug'部分将为slug获取翻译别名字段。多多少少,漫画的slug\u translation.content。当它本地化为英语时,这很好,但是使用默认的西班牙语,因为i18n表中没有该语言的任何条目,所以它不会返回任何内容。poorman的方法是为该语言设置一个条件并将其分配给$field变量,但这看起来不是很好

有没有其他方法,或者我遗漏了什么

poorman的方法是为该语言设置一个条件并将其分配给$field变量,但这看起来不是很好

恐怕这就是您必须做的,因为在检索数据之后,原始字段将被替换,并且在转换行为中没有功能可以找到合适的字段进行过滤。您可以将逻辑隐藏在模型层表的某个地方,这是一种用于干燥的自定义/扩展行为,但通常无法避免

您可能希望了解并建议进行增强。根据当前区域设置返回适当筛选字段的附加方法可能会补充translationField方法