Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新时替换翻译,避免重复_Php_Cakephp_Internationalization_Cakephp 3.0 - Fatal编程技术网

Php 更新时替换翻译,避免重复

Php 更新时替换翻译,避免重复,php,cakephp,internationalization,cakephp-3.0,Php,Cakephp,Internationalization,Cakephp 3.0,每次更新某个实体时,我都需要更新i18n表中可翻译字段的翻译(我正在使用)。问题是,对于相同的地区、型号、外键和字段四倍,我有多个翻译,但我只需要一个(准确地说是最后一个)如何更新现有的翻译而不是创建新的翻译? 以下是我保存翻译的方式: $entity->set($field, $value); foreach ($langs as $code) { $translation = $this->Translator->translate($value, "en", $c

每次更新某个实体时,我都需要更新i18n表中可翻译字段的翻译(我正在使用)。问题是,对于相同的
地区
型号
外键
字段
四倍,我有多个翻译,但我只需要一个(准确地说是最后一个)如何更新现有的翻译而不是创建新的翻译?

以下是我保存翻译的方式:

$entity->set($field, $value);
foreach ($langs as $code) {
    $translation = $this->Translator->translate($value, "en", $code);
    $entity->translation($code)->set([$field => $translation]);
}
$table->save($entity);
例如:


更新现有的翻译应该是开箱即用的,使用最新的
3.0.x
3.3.x
进行快速测试,结果表明它按预期工作,即没有创建重复项。请始终提及您的确切CakePHP版本(
3.x.x
,请参阅
vendor/CakePHP/CakePHP/version.txt
),并确保干净的应用程序安装仍然存在此问题,并且您提供了足够的代码来重现此问题。更新现有翻译应该是现成的,使用最新的
3.0.x
3.3.x
进行快速测试,结果表明其工作正常,即未创建重复项。请始终提及您的确切CakePHP版本(
3.x.x
,请参阅
vendor/CakePHP/CakePHP/version.txt
),并确保干净的应用程序安装仍然存在此问题,并且您提供了足够的代码来重现此问题。