Класс ShadowTableStrategy
Этот класс предоставляет способ перевода динамических данных, сохраняя переводы в отдельной таблице-тени, где каждая строка соответствует строке основной таблицы.
Краткое описание свойств
- $_config protected
array<string, mixed>Конфигурация выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация уже настроена с помощью значений по умолчанию
- $_defaultConfig protected
array<string, mixed>Конфигурация по умолчанию
- $_tableLocator protected
Cake\ORM\Locator\LocatorInterface|nullЭкземпляр локализации таблицы
- $defaultTable protected
string|nullПсевдоним таблицы по умолчанию для этого объекта.
- $locale protected
string|nullИмя локали, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов
- $table protected
Cake\ORM\TableЭкземпляр таблицы
- $translationTable protected
Cake\ORM\TableЭкземпляр таблицы, отвечающий за переводы
Краткое описание методов
-
__construct() public
Конструктор
-
_configDelete() protected
Удаляет один ключ конфигурации.
-
_configRead() protected
Считывает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
addFieldsToQuery() protected
Добавляет поля перевода в запрос.
-
afterSave() public
Сбрасывает временное свойство
_i18nпосле сохранения сущности -
beforeFind() public
Метод обратного вызова, который реагирует на событие
beforeFindв связанной таблице. Он изменяет переданный запрос, жадно загружая поля перевода и добавляя форматировщик для копирования значений в записи основной таблицы. -
beforeSave() public
Изменяет сущность перед сохранением, чтобы переведенные поля также сохранялись в базе данных.
-
buildMarshalMap() public
Создает набор свойств, которые должны быть включены в процесс маппинга.
-
bundleTranslatedFields() protected
Вспомогательный метод, используемый для создания нескольких сущностей переведенных полей из данных, найденных в свойстве
_translationsв переданной сущности. Результат будет помещен в его свойство_i18n. -
configShallow() public
Объединяет предоставленную конфигурацию с существующей. В отличие от
config(), который выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
fetchTable() public
Вспомогательный метод для получения экземпляра таблицы.
-
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для конкретного ключа.
-
getLocale() public
Возвращает текущую локаль.
-
getTableLocator() public
Получает локатор таблицы.
-
getTranslationTable() public
Возвращает экземпляр таблицы переводов.
-
groupTranslations() public
Изменяет результаты поиска в таблице, чтобы объединить полные записи переводов в каждую сущность под ключом
_translations. -
iterateClause() protected
Итерируется по фрагменту для присвоения псевдонимов полям.
-
mainFields() protected
Лениво определяет и возвращает поля основной таблицы.
-
rowMapper() protected
Изменяет результаты поиска в таблице, чтобы объединить переведенные поля в каждую сущность для заданной локали.
-
setConfig() public
Устанавливает конфигурацию.
-
setLocale() public
Устанавливает локаль для использования.
-
setTableLocator() public
Устанавливает локатор таблицы.
-
setupAssociations() protected
Создает ассоциацию hasMany для всех записей.
-
setupHasOneAssociation() protected
Создает ассоциацию hasOne для записи с необходимой локалью.
-
translatedFields() protected
Лениво определяет и возвращает поля таблицы перевода.
-
translationField() public
Возвращает полное имя поля с алиасом для переведенных полей.
-
traverseClause() protected
Перебирает фрагмент для присвоения алиасов полям.
-
unsetEmptyFields() protected
Сбрасывает пустые переводы, чтобы избежать сохранения.
Подробное описание методов
__construct() public
__construct(Cake\ORM\Table $table, array<string, mixed> $config = [])
Конструктор
Параметры
-
Cake\ORM\Table$table Экземпляр таблицы.
-
array<string, mixed>$config optional Настройка.
_configDelete() protected
_configDelete(string $key): void
Удаляет один ключ конфигурации.
Параметры
-
string$key Ключ для удаления.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли пытаетесь перезаписать существующую конфигурацию
_configRead() protected
_configRead(string|null $key): mixed
Считывает ключ конфигурации.
Параметры
-
string|null$key Ключ для чтения.
Возвращает
mixed_configWrite() protected
_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
Записывает ключ конфигурации.
Параметры
-
array<string, mixed>|string$key Ключ для записи.
-
mixed$value Значение для записи.
-
string|bool$merge optional True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли пытаетесь перезаписать существующую конфигурацию
addFieldsToQuery() protected
addFieldsToQuery(Cake\ORM\Query $query, array<string, mixed> $config): bool
Добавляет поля перевода в запрос.
Если в запросе используются autofields (прямо или косвенно), сначала добавьте поля основной таблицы в запрос.
Добавляйте переводы только для полей, которые находятся в основной таблице, хотя всегда добавляйте поле locale.
Параметры
-
Cake\ORM\Query$query Запрос для проверки.
-
array<string, mixed>$config Настройка для добавления полей.
Возвращает
boolafterSave() public
afterSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity): void
Снимает временное свойство _i18n после сохранения сущности
Параметры
-
Cake\Event\EventInterface$event Событие beforeSave, которое было запущено
-
Cake\Datasource\EntityInterface$entity Сущность, которая будет сохранена
Возвращает
voidbeforeFind() public
beforeFind(Cake\Event\EventInterface $event, Cake\ORM\Query $query, ArrayObject $options): void
Метод обратного вызова, который слушает событие beforeFind в связанной таблице. Он изменяет переданный запрос, загружая жадно поля перевода и добавляя форматировщик для копирования значений в записи основной таблицы.
Параметры
-
Cake\Event\EventInterface$event Событие beforeFind, которое было запущено.
-
Cake\ORM\Query$query Запрос.
-
ArrayObject$options Параметры запроса.
Возвращает
voidbeforeSave() public
beforeSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, ArrayObject $options): void
Изменяет сущность перед сохранением, чтобы поля перевода также сохранялись в базе данных.
Параметры
-
Cake\Event\EventInterface$event Событие beforeSave, которое было запущено.
-
Cake\Datasource\EntityInterface$entity Сущность, которая будет сохранена.
-
ArrayObject$options опции, переданные методу save.
Возвращает
voidbuildMarshalMap() public
buildMarshalMap(Cake\ORM\Marshaller $marshaller, array $map, array<string, mixed> $options): array
Создает набор свойств, которые должны быть включены в процесс маршалинга.
Добавить обработчики маршалинга _translations. Вы можете отключить маршалинг переводов, установив 'translations' => false в опциях, предоставленных Table::newEntity() или Table::patchEntity().
Параметры
-
Cake\ORM\Marshaller$marshaller -
array$map -
array<string, mixed>$options
Возвращает
arraybundleTranslatedFields() protected
bundleTranslatedFields(Cake\Datasource\EntityInterface $entity): void
Вспомогательный метод, используемый для создания нескольких сущностей переведенных полей из данных, найденных в свойстве _translations в переданной сущности. Результат будет помещен в его свойство _i18n.
Параметры
-
Cake\Datasource\EntityInterface$entity Сущность.
Возвращает
voidconfigShallow() public
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
Сливает предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка определенного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или массив конфигураций.
-
mixed|null$value optional Значение для установки.
Возвращает
$thisfetchTable() public
fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table
Удобный метод для получения экземпляра таблицы.
Параметры
-
string|null$alias optional Имя псевдонима, которое вы хотите получить. Должно быть в формате CamelCase. Если
null, используется значение свойства $defaultTable.-
array<string, mixed>$options optional Параметры, с которыми вы хотите создать таблицу. Если таблица уже загружена, параметры реестра будут проигнорированы.
Возвращает
Cake\ORM\TableВыбрасывает
Cake\Core\Exception\CakeExceptionЕсли аргумент `$alias` и свойство `$defaultTable` оба равны `null`.
См. также
getConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определенного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
-
string|null$key optional Ключ для получения или null для всей конфигурации.
-
mixed$default optional Возвращаемое значение, когда ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для указанного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedВыбрасывает
InvalidArgumentExceptiongetLocale() public
getLocale(): string
Возвращает текущий locale.
Если locale явно не задан с помощью setLocale(), этот метод вернет текущий глобальный locale.
Возвращает
stringСм. также
\Cake\ORM\Behavior\TranslateBehavior::setLocale()
getTableLocator() public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Получает локатор таблиц.
Возвращает
Cake\ORM\Locator\LocatorInterfacegetTranslationTable() public
getTranslationTable(): Cake\ORM\Table
Возвращает экземпляр таблицы переводов.
Возвращает
Cake\ORM\TablegroupTranslations() public
groupTranslations(Cake\Datasource\ResultSetInterface $results): Cake\Collection\CollectionInterface
Изменяет результаты поиска в таблице для объединения полных записей переводов в каждую сущность под ключом _translations.
Параметры
-
Cake\Datasource\ResultSetInterface$results Результаты для изменения.
Возвращает
Cake\Collection\CollectionInterfaceiterateClause() protected
iterateClause(Cake\ORM\Query $query, string $name = '', array<string, mixed> $config = []): bool
Итерируется по условию для присвоения псевдонимов полям.
Цель здесь — прозрачно предотвратить ошибки с неоднозначными полями, добавляя префикс с соответствующим алиасом таблицы к полям. В настоящее время метод ожидает получить только условие ORDER.
Параметры
-
Cake\ORM\Query$query запрос для проверки.
-
string$name optional Имя условия.
-
array<string, mixed>$config optional Конфигурация для добавления полей.
Возвращает
boolmainFields() protected
mainFields(): array<string>
Лениво определяет и возвращает основные поля таблицы.
Возвращает
array<string>rowMapper() protected
rowMapper(Cake\Datasource\ResultSetInterface $results, string $locale): Cake\Collection\CollectionInterface
Изменяет результаты поиска в таблице, чтобы объединить переведенные поля в каждую сущность для заданного языка.
Параметры
-
Cake\Datasource\ResultSetInterface$results Результаты для отображения.
-
string$locale Строка языка.
Возвращает
Cake\Collection\CollectionInterfacesetConfig() public
setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this
Устанавливает конфигурацию.
Использование
Установка конкретного значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value optional Значение для установки.
-
bool$merge optional Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию. По умолчанию — true.
Возвращает
$thisИсключения
Cake\Core\Exception\CakeExceptionПри попытке установить недействительный ключ.
setLocale() public
setLocale(string|null $locale): $this
Устанавливает язык, который будет использоваться.
При извлечении записей используется язык, установленный с помощью этого метода. Аналогично, при сохранении данных, они сохраняются на этом языке.
Обратите внимание, что если для сущности задан параметр _locale, этот язык будет приоритетным по отношению к языку, установленного с помощью этого метода (и по отношению к глобально настроенному языку)!
Параметры
-
string|null$locale Язык, который будет использоваться для извлечения и сохранения записей. Передайте
null, чтобы сбросить текущий язык и использовать глобально настроенный язык по умолчанию.
Возвращает
$thissetTableLocator() public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
Устанавливает локатор таблицы.
Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocator Экземпляр LocatorInterface.
Возвращает
$thissetupAssociations() protected
setupAssociations(): void
Создает связь hasMany для всех записей.
Не создавайте здесь связь hasOne, так как условия объединения изменяются в методе before find — поэтому создавайте/изменяйте их там.
Возвращает
voidsetupHasOneAssociation() protected
setupHasOneAssociation(string $locale, ArrayObject $options): void
Создает связь hasOne для записи с необходимым языком.
Параметры
-
string$locale Язык
-
ArrayObject$options Опции поиска
Возвращает
voidtranslatedFields() protected
translatedFields(): array<string>
Лениво определяет и возвращает поля таблицы переводов.
Возвращает
array<string>translationField() public
translationField(string $field): string
Возвращает полное имя поля с алиасом для переведенных полей.
Если запрашиваемое поле настроено как поле перевода, возвращается поле с алиасом соответствующей ассоциации. Для всех других полей возвращается имя поля с алиасом таблицы.
Параметры
-
string$field Имя поля для присвоения алиаса.
Возвращает
stringtraverseClause() protected
traverseClause(Cake\ORM\Query $query, string $name = '', array<string, mixed> $config = []): bool
Итерируется по условию для присвоения псевдонимов полям.
Цель здесь — прозрачно предотвратить ошибки с неоднозначными полями, добавляя префикс с соответствующим алиасом таблицы к полям. В настоящее время метод ожидает получить только условие WHERE.
Параметры
-
Cake\ORM\Query$query запрос для проверки.
-
string$name optional Имя условия.
-
array<string, mixed>$config optional Конфигурация для добавления полей.
Возвращает
boolunsetEmptyFields() protected
unsetEmptyFields(Cake\Datasource\EntityInterface $entity): void
Удаляет пустые переводы для предотвращения сохранения.
Должен вызываться только если $this->_config['allowEmptyTranslations'] равен false.
Параметры
-
Cake\Datasource\EntityInterface$entity Сущность, в которой нужно проверить пустые поля переводов.
Возвращает
voidДетали свойств
$_config protected
Конфигурация выполнения
Тип
array<string, mixed>$_configInitialized protected
Настройка свойства конфигурации уже настроена значениями по умолчанию
Тип
bool$_defaultConfig protected
Конфигурация по умолчанию
Объединяется с пользователем-предоставленной конфигурацией.
Тип
array<string, mixed>$_tableLocator protected
Экземпляр локатора таблицы
Тип
Cake\ORM\Locator\LocatorInterface|null$defaultTable protected
Алиас таблицы по умолчанию для этого объекта.
Тип
string|null$locale protected
Имя языка, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов
Тип
string|null$table protected
Экземпляр таблицы
Тип
Cake\ORM\Table$translationTable protected
Экземпляр таблицы, отвечающей за перевод
Тип
Cake\ORM\Table
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.ORM.Behavior.Translate.ShadowTableStrategy.html