Класс 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в связанной таблице. Он изменяет переданный запрос, загружая переведенные поля с помощью eager loading и добавляя обработчик для копирования значений в записи основной таблицы. -
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 необязательно Конфигурация.
_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 необязательно Истина для рекурсивного слияния, 'shallow' для простого слияния, ложь для перезаписи, по умолчанию ложь.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionпри попытке перезаписи существующей конфигурации
addFieldsToQuery() protected
addFieldsToQuery(Cake\ORM\Query $query, array<string, mixed> $config): bool
Добавляет поля перевода в запрос.
Если запрос использует автополя (прямо или косвенно), сначала добавляются поля основной таблицы в запрос.
Добавляются только переводы для полей, которые находятся в основной таблице, хотя всегда добавляется поле языка.
Параметры
-
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 опции, переданные в метод сохранения.
Возвращает
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 необязательно Значение для установки.
Возвращает
$thisfetchTable() public
fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table
Удобный метод для получения экземпляра таблицы.
Параметры
-
string|null$alias необязательно Имя псевдонима, которое вы хотите получить. Должно быть в формате CamelCase. Если
null, используется значение свойства $defaultTable.-
array<string, mixed>$options необязательно Параметры, с которыми вы хотите создать таблицу. Если таблица уже загружена, параметры реестра будут проигнорированы.
Возвращает
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 необязательно Ключ для получения или null для всей конфигурации.
-
mixed$default необязательно Возвращаемое значение, когда ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для указанного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedИсключения
InvalidArgumentExceptiongetLocale() public
getLocale(): string
Возвращает текущий язык.
Если язык не был явно задан с помощью setLocale(), этот метод вернет текущий глобальный язык, настроенный в системе.
Возвращает
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
Итерируется по условию для алиасирования полей.
Цель здесь — прозрачно предотвратить ошибки неоднозначности полей, добавляя префикс соответствующего алиаса таблицы к полям. В настоящее время этот метод ожидает получить только условие сортировки.
Параметры
-
Cake\ORM\Query$query запрос для проверки.
-
string$name optional Имя условия.
-
array<string, mixed>$config optional Настройки для добавления полей.
Возвращает
boolmainFields() protected
mainFields(): array
Лениво определяет и возвращает основные поля таблицы.
Возвращает
arrayrowMapper() 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
Лениво определяет и возвращает поля таблицы переводов.
Возвращает
arraytranslationField() 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.3/class-Cake.ORM.Behavior.Translate.ShadowTableStrategy.html