Spec-Zone.ru › CakePHP 4.2

Класс Marshaller

Содержит логику преобразования данных массива в сущности.

Полезно при преобразовании данных запроса в сущности.

Пространство имен: Cake\ORM
См.: \Cake\ORM\Table::newEntity()
См.: \Cake\ORM\Table::newEntities()
См.: \Cake\ORM\Table::patchEntity()
См.: \Cake\ORM\Table::patchEntities()

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

  • $_table protected
    Cake\ORM\Table

    Экземпляр таблицы, для которой предназначен этот маршаллинг.

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

  • __construct() public

    Конструктор.

  • _belongsToMany() protected

    Маршаллирует данные для ассоциаций belongsToMany.

  • _buildPropertyMap() protected

    Создаёт карту свойств => вызываемой функции маршаллирования.

  • _loadAssociatedByIds() protected

    Загружает список belongsToMany по идентификаторам.

  • _marshalAssociation() protected

    Создаёт новый под-маршаллинг и маршаллирует связанные данные.

  • _mergeAssociation() protected

    Создаёт новый под-маршаллинг и объединяет связанные данные.

  • _mergeBelongsToMany() protected

    Создаёт новый под-маршаллинг и объединяет связанные данные для ассоциации BelongstoMany.

  • _mergeJoinData() protected

    Объединяет специальное свойство _joinData в набор сущностей.

  • _normalizeAssociations() protected

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

  • _prepareDataAndOptions() protected

    Возвращает данные и опции, подготовленные для проверки и маршаллирования.

  • _validate() protected

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

  • dispatchAfterMarshal() protected

    Отправляет событие Model.afterMarshal.

  • many() public

    Загружает множество сущностей и их связанные данные.

  • merge() public

    Объединяет $data в $entity и рекурсивно выполняет то же самое для каждого имени ассоциации, переданного в $options. При объединении ассоциаций, если сущность отсутствует в родительской сущности для данной ассоциации, будет создана новая.

  • mergeMany() public

    Объединяет каждый элемент из $data в каждую сущность в $entities и рекурсивно выполняет то же самое для каждого имени ассоциации, переданного в $options. При объединении ассоциаций, если сущность отсутствует в родительской сущности для данной ассоциации, будет создана новая.

  • one() public

    Загружает одну сущность и её связанные данные.

END_OF_DOCUMENT_MARKER

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

__construct() public

__construct(Cake\ORM\Table $table)

Конструктор.

Параметры

Cake\ORM\Table $table

Таблица, для которой предназначен этот маршаллер.

_belongsToMany() protected

_belongsToMany(Cake\ORM\Association\BelongsToMany $assoc, array $data, array $options = []): Cake\Datasource\EntityInterface[]

Маршаллирует данные для ассоциаций belongsToMany.

Создаёт связанные сущности и обрабатывает особые случаи для сущностей таблиц соединения.

Параметры

Cake\ORM\Association\BelongsToMany $assoc

Ассоциация для маршаллирования.

array $data

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

array $options опционально

Список опций.

Возвращает

Cake\Datasource\EntityInterface[]

Выбрасывает

BadMethodCallException

InvalidArgumentException

RuntimeException

_buildPropertyMap() protected

_buildPropertyMap(array $data, array $options): array

Создаёт отображение свойство => вызываемый маршаллинг.

Параметры

array $data

Маршаллируемые данные.

array $options

Список опций, содержащих ключ «associated».

Возвращает

array

Выбрасывает

InvalidArgumentException
При отсутствии ассоциаций.

_loadAssociatedByIds() protected

_loadAssociatedByIds(Cake\ORM\Association $assoc, array $ids): Cake\Datasource\EntityInterface[]

Загружает список принадлежностей многих по идентификаторам.

Параметры

Cake\ORM\Association $assoc

Класс ассоциации для ассоциации belongsToMany.

array $ids

Список идентификаторов для загрузки.

Возвращает

Cake\Datasource\EntityInterface[]

_marshalAssociation() protected

_marshalAssociation(Cake\ORM\Association $assoc, mixed $value, array $options): Cake\Datasource\EntityInterfaceCake\Datasource\EntityInterface[]|null

Создаёт новый подмаршаллер и маршаллирует связанные данные.

Параметры

Cake\ORM\Association $assoc

Ассоциация для маршаллирования

mixed $value

Данные для гидратации. Если это не массив, этот метод вернёт null.

array $options

Список опций.

Возвращает

Cake\Datasource\EntityInterfaceCake\Datasource\EntityInterface[]|null

_mergeAssociation() protected

_mergeAssociation(Cake\Datasource\EntityInterfaceCake\Datasource\EntityInterface[] $original, Cake\ORM\Association $assoc, mixed $value, array $options): Cake\Datasource\EntityInterfaceCake\Datasource\EntityInterface[]|null

Создаёт новый подмаршаллер и объединяет связанные данные.

Параметры

Cake\Datasource\EntityInterfaceCake\Datasource\EntityInterface[] $original

Исходная сущность

Cake\ORM\Association $assoc

Ассоциация для объединения

mixed $value

Массив данных для гидратации. Если это не массив, этот метод вернёт null.

array $options

Список опций.

Возвращает

Cake\Datasource\EntityInterfaceCake\Datasource\EntityInterface[]|null

_mergeBelongsToMany() protected

_mergeBelongsToMany(Cake\Datasource\EntityInterface[] $original, Cake\ORM\Association\BelongsToMany $assoc, array $value, array $options): Cake\Datasource\EntityInterface[]

Создаёт новый подмаршаллер и объединяет связанные данные для ассоциации BelongstoMany.

Параметры

Cake\Datasource\EntityInterface[] $original

Список исходных сущностей.

Cake\ORM\Association\BelongsToMany $assoc

Ассоциация для маршаллирования

array $value

Данные для гидратации

array $options

Список опций.

Возвращает

Cake\Datasource\EntityInterface[]

_mergeJoinData() protected

_mergeJoinData(Cake\Datasource\EntityInterface[] $original, Cake\ORM\Association\BelongsToMany $assoc, array $value, array $options): Cake\Datasource\EntityInterface[]

Объединяет специальное свойство _joinData в набор сущностей.

Параметры

Cake\Datasource\EntityInterface[] $original

Список исходных сущностей.

Cake\ORM\Association\BelongsToMany $assoc

Ассоциация для маршаллирования

array $value

Данные для гидратации

array $options

Список опций.

Возвращает

Cake\Datasource\EntityInterface[]

_normalizeAssociations() protected

_normalizeAssociations(array|string $associations): array

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

Параметры

array|string $associations

Массив включённых ассоциаций.

Возвращает

array

_prepareDataAndOptions() protected

_prepareDataAndOptions(array $data, array $options): array

Возвращает подготовленные для проверки и маршаллирования данные и опции.

Параметры

array $data

Данные для подготовки.

array $options

Опции, переданные этому маршаллеру.

Возвращает

array

_validate() protected

_validate(array $data, array $options, bool $isNew): array

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

Параметры

array $data

Данные для проверки.

array $options

Опции, переданные этому маршаллеру.

bool $isNew

Является ли это новой сущностью или сущностью для обновления.

Возвращает

array

Выбрасывает

RuntimeException
Если валидатор создать нельзя.

dispatchAfterMarshal() protected

dispatchAfterMarshal(Cake\Datasource\EntityInterface $entity, array $data, array $options = []): void

Отправляет событие Model.afterMarshal.

Параметры

Cake\Datasource\EntityInterface $entity

Сущность, которая была маршаллирована.

array $data

readOnly $data для использования.

array $options опционально

Список опций, которые являются readOnly.

Возвращает

void

many() public

many(array $data, array $options = []): Cake\Datasource\EntityInterface[]

Гидратирует множество сущностей и их связанные данные.

Опции:

  • validate: Установить в false для отключения валидации. Также может быть строкой правил валидации, которые нужно применить. По умолчанию true/default.
  • associated: Ассоциации, перечисленные здесь, также будут маршаллированы. По умолчанию null.
  • fields: Разрешённый список полей, которые будут назначены сущности. Если отсутствует, будет использован список доступных полей в сущности. По умолчанию null.
  • accessibleFields: Список полей для разрешения или запрета в доступных полях сущности. По умолчанию null.
  • forceNew: При включении, ассоциации belongsToMany будут иметь созданные «новые» сущности, когда установлены значения первичного ключа, и запись ещё не существует. Обычно первичный ключ в отсутствующих сущностях будет игнорироваться. По умолчанию false.

Параметры

array $data

Данные для гидратации.

array $options опционально

Список опций

Возвращает

Cake\Datasource\EntityInterface[]

См. также

\Cake\ORM\Table::newEntities()
\Cake\ORM\Entity::$_accessible

merge() public

merge(Cake\Datasource\EntityInterface $entity, array $data, array $options = []): Cake\Datasource\EntityInterface

Объединяет $data в $entity и рекурсивно выполняет то же действие для каждого из имен ассоциаций, переданных в $options. При объединении ассоциаций, если сущность отсутствует в родительской сущности для данной ассоциации, новая сущность будет создана.

При объединении ассоциаций HasMany или BelongsToMany все сущности в массиве $data будут отображены, те, которые могут быть сопоставлены по первичному ключу, получат объединённые данные, а те, которые нет, будут отброшены. Опция ids может быть использована для определения, должна ли ассоциация использовать формат _ids.

Опции:

  • associated: Ассоциации, перечисленные здесь, также будут обработаны.
  • validate: Выполнять ли проверку данных перед гидратацией сущностей. Также может быть строкой, указывающей на использование конкретного валидатора. По умолчанию true/default.
  • fields: Разрешённый список полей, которые будут назначены сущности. Если отсутствует, будет использован список доступных полей в сущности.
  • accessibleFields: Список полей для разрешения или запрета в доступных полях сущности.

Вышеперечисленные опции могут быть использованы в каждом вложенном массиве associated. В дополнение к вышеперечисленным опциям вы также можете использовать опцию onlyIds для ассоциаций HasMany и BelongsToMany. При значении true эта опция ограничивает данные запроса только чтением из _ids.

$result = $marshaller->merge($entity, $data, [
  'associated' => ['Tags' => ['onlyIds' => true]]
]);

Параметры

Cake\Datasource\EntityInterface $entity

сущность, в которую будут объединены данные

array $data

список пар ключ-значение полей, которые будут объединены в сущность

array $options optional

Список опций.

Возвращает

Cake\Datasource\EntityInterface

См. также

\Cake\ORM\Entity::$_accessible

mergeMany() public

mergeMany(iterableCake\Datasource\EntityInterface> $entities, array $data, array $options = []): Cake\Datasource\EntityInterface[]

Объединяет каждый элемент из $data в каждую сущность в $entities и рекурсивно выполняет то же действие для каждого из имен ассоциаций, переданных в $options. При объединении ассоциаций, если сущность отсутствует в родительской сущности для данной ассоциации, новая сущность будет создана.

Записи в $data сопоставляются с сущностями с использованием столбца первичного ключа. Записи в $entities , которые не могут быть сопоставлены ни с одной записью в $data , будут отброшены. Записи в $data , которые не смогли быть сопоставлены, будут обработаны как новые сущности.

При объединении ассоциаций HasMany или BelongsToMany все сущности в массиве $data будут отображены, те, которые могут быть сопоставлены по первичному ключу, получат объединённые данные, а те, которые нет, будут отброшены.

Опции:

  • validate: Выполнять ли проверку данных перед гидратацией сущностей. Может быть строкой, указывающей на использование конкретного валидатора. По умолчанию true/default.
  • associated: Ассоциации, перечисленные здесь, также будут обработаны.
  • fields: Разрешённый список полей, которые будут назначены сущности. Если отсутствует, будет использован список доступных полей в сущности.
  • accessibleFields: Список полей для разрешения или запрета в доступных полях сущности.

Параметры

iterableCake\Datasource\EntityInterface> $entities

сущности, в которые будут объединены данные

array $data

список массивов, которые будут объединены в сущности

array $options optional

Список опций.

Возвращает

Cake\Datasource\EntityInterface[]

См. также

\Cake\ORM\Entity::$_accessible

one() public

one(array $data, array $options = []): Cake\Datasource\EntityInterface

Гидратировать одну сущность и её связанные данные.

Опции:

  • validate: Установить в false, чтобы отключить валидацию. Также может быть строкой правил валидатора для применения. По умолчанию true/default.
  • associated: Ассоциации, перечисленные здесь, также будут обработаны. По умолчанию null.
  • fields: Разрешённый список полей, которые будут назначены сущности. Если отсутствует, будет использован список доступных полей в сущности. По умолчанию null.
  • accessibleFields: Список полей для разрешения или запрета в доступных полях сущности. По умолчанию null
  • forceNew: При включении, для ассоциаций belongsToMany будут созданы "новые" сущности, когда установлены значения первичного ключа, а запись ещё не существует. Обычно первичный ключ для отсутствующих сущностей будет игнорироваться. По умолчанию false.

Вышеперечисленные опции могут быть использованы в каждом вложенном массиве associated. В дополнение к вышеперечисленным опциям вы также можете использовать опцию onlyIds для ассоциаций HasMany и BelongsToMany. При значении true эта опция ограничивает данные запроса только чтением из _ids.

$result = $marshaller->one($data, [
  'associated' => ['Tags' => ['onlyIds' => true]]
]);
$result = $marshaller->one($data, [
  'associated' => [
    'Tags' => ['accessibleFields' => ['*' => true]]
  ]
]);

Параметры

array $data

Данные для гидратации.

array $options optional

Список опций

Возвращает

Cake\Datasource\EntityInterface

См. также

\Cake\ORM\Table::newEntity()
\Cake\ORM\Entity::$_accessible

Подробности свойств

$_table 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.2/class-Cake.ORM.Marshaller.html

Spec-Zone.ru

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