Spec-Zone.ru › CakePHP 4.4

Класс ShadowTableStrategy

Этот класс предоставляет способ перевода динамических данных, сохраняя переводы в отдельной таблице-тени, где каждая строка соответствует строке основной таблицы.

Пространство имён: Cake\ORM\Behavior\Translate

Краткое описание свойств

  • $_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

    Сбрасывает пустые переводы, чтобы избежать сохранения.

END_OF_DOCUMENT_MARKER

Подробное описание методов

__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

Настройка для добавления полей.

Возвращает

bool

afterSave() public

afterSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity): void

Снимает временное свойство _i18n после сохранения сущности

Параметры

Cake\Event\EventInterface $event

Событие beforeSave, которое было запущено

Cake\Datasource\EntityInterface $entity

Сущность, которая будет сохранена

Возвращает

void

beforeFind() 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

Параметры запроса.

Возвращает

void

beforeSave() 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.

Возвращает

void

buildMarshalMap() 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

Возвращает

array

bundleTranslatedFields() protected

bundleTranslatedFields(Cake\Datasource\EntityInterface $entity): void

Вспомогательный метод, используемый для создания нескольких сущностей переведенных полей из данных, найденных в свойстве _translations в переданной сущности. Результат будет помещен в его свойство _i18n.

Параметры

Cake\Datasource\EntityInterface $entity

Сущность.

Возвращает

void

configShallow() 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

Значение для установки.

Возвращает

$this

fetchTable() 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`.

См. также

\Cake\ORM\TableLocator::get()

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

Возвращаемое значение, когда ключ не существует.

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

Возвращает конфигурацию для указанного ключа.

Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.

Параметры

string $key

Ключ для получения.

Возвращает

mixed

Выбрасывает

InvalidArgumentException

getLocale() public

getLocale(): string

Возвращает текущий locale.

Если locale явно не задан с помощью setLocale(), этот метод вернет текущий глобальный locale.

Возвращает

string

См. также

\Cake\I18n\I18n::getLocale()
\Cake\ORM\Behavior\TranslateBehavior::setLocale()

getTableLocator() public

getTableLocator(): Cake\ORM\Locator\LocatorInterface

Получает локатор таблиц.

Возвращает

Cake\ORM\Locator\LocatorInterface

getTranslationTable() public

getTranslationTable(): Cake\ORM\Table

Возвращает экземпляр таблицы переводов.

Возвращает

Cake\ORM\Table

groupTranslations() public

groupTranslations(Cake\Datasource\ResultSetInterface $results): Cake\Collection\CollectionInterface

Изменяет результаты поиска в таблице для объединения полных записей переводов в каждую сущность под ключом _translations.

Параметры

Cake\Datasource\ResultSetInterface $results

Результаты для изменения.

Возвращает

Cake\Collection\CollectionInterface

iterateClause() 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

Конфигурация для добавления полей.

Возвращает

bool

mainFields() 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\CollectionInterface

setConfig() 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, чтобы сбросить текущий язык и использовать глобально настроенный язык по умолчанию.

Возвращает

$this

setTableLocator() public

setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this

Устанавливает локатор таблицы.

Параметры

Cake\ORM\Locator\LocatorInterface $tableLocator

Экземпляр LocatorInterface.

Возвращает

$this

setupAssociations() protected

setupAssociations(): void

Создает связь hasMany для всех записей.

Не создавайте здесь связь hasOne, так как условия объединения изменяются в методе before find — поэтому создавайте/изменяйте их там.

Возвращает

void

setupHasOneAssociation() protected

setupHasOneAssociation(string $locale, ArrayObject $options): void

Создает связь hasOne для записи с необходимым языком.

Параметры

string $locale

Язык

ArrayObject $options

Опции поиска

Возвращает

void

translatedFields() protected

translatedFields(): array<string>

Лениво определяет и возвращает поля таблицы переводов.

Возвращает

array<string>

translationField() public

translationField(string $field): string

Возвращает полное имя поля с алиасом для переведенных полей.

Если запрашиваемое поле настроено как поле перевода, возвращается поле с алиасом соответствующей ассоциации. Для всех других полей возвращается имя поля с алиасом таблицы.

Параметры

string $field

Имя поля для присвоения алиаса.

Возвращает

string

traverseClause() 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

Конфигурация для добавления полей.

Возвращает

bool

unsetEmptyFields() 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API