Spec-Zone.ru › CakePHP 4.3

Класс 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 в связанной таблице. Он изменяет переданный запрос, загружая переведенные поля с помощью 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

    Удаляет пустые переводы для предотвращения сохранения.

END_OF_DOCUMENT_MARKER

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

__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

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

Возвращает

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

опции, переданные в метод сохранения.

Возвращает

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 необязательно

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

Возвращает

$this

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

См. также

\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 необязательно

Ключ для получения или null для всей конфигурации.

mixed $default необязательно

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

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

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

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

Параметры

string $key

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

Возвращает

mixed

Исключения

InvalidArgumentException

getLocale() public

getLocale(): string

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

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

Возвращает

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

Итерируется по условию для алиасирования полей.

Цель здесь — прозрачно предотвратить ошибки неоднозначности полей, добавляя префикс соответствующего алиаса таблицы к полям. В настоящее время этот метод ожидает получить только условие сортировки.

Параметры

Cake\ORM\Query $query

запрос для проверки.

string $name optional

Имя условия.

array<string, mixed> $config optional

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

Возвращает

bool

mainFields() protected

mainFields(): array

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

Возвращает

array

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

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

Возвращает

array

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.3/class-Cake.ORM.Behavior.Translate.ShadowTableStrategy.html

Spec-Zone.ru

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