Класс Marshaller
Содержит логику преобразования данных массива в сущности.
Полезно при преобразовании данных запроса в сущности.
См.: \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
Загружает одну сущность и её связанные данные.
Подробное описание методов
__construct() public
__construct(Cake\ORM\Table $table)
Конструктор.
Параметры
-
Cake\ORM\Table$table Таблица, для которой предназначен этот маршаллер.
_belongsToMany() protected
_belongsToMany(Cake\ORM\Association\BelongsToMany $assoc, array $data, array<string, mixed> $options = []): arrayCake\Datasource\EntityInterface>
Маршаллирует данные для ассоциаций belongsToMany.
Создаёт связанные сущности и обрабатывает особые случаи для сущностей таблиц соединения.
Параметры
-
Cake\ORM\Association\BelongsToMany$assoc Ассоциация для маршаллирования.
-
array$data Данные для преобразования в сущности.
-
array<string, mixed>$options опционально Список опций.
Возвращает
arrayCake\Datasource\EntityInterface>Выбрасывает
BadMethodCallExceptionInvalidArgumentExceptionRuntimeException_buildPropertyMap() protected
_buildPropertyMap(array $data, array<string, mixed> $options): array
Создаёт отображение свойство => вызываемый маршаллинг.
Параметры
-
array$data Маршаллируемые данные.
-
array<string, mixed>$options Список опций, содержащих ключ «associated».
Возвращает
arrayВыбрасывает
InvalidArgumentExceptionПри отсутствии ассоциаций.
_loadAssociatedByIds() protected
_loadAssociatedByIds(Cake\ORM\Association $assoc, array $ids): arrayCake\Datasource\EntityInterface>
Загружает список принадлежностей многих по идентификаторам.
Параметры
-
Cake\ORM\Association$assoc Класс ассоциации для ассоциации belongsToMany.
-
array$ids Список идентификаторов для загрузки.
Возвращает
arrayCake\Datasource\EntityInterface>_marshalAssociation() protected
_marshalAssociation(Cake\ORM\Association $assoc, mixed $value, array<string, mixed> $options): Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null
Создаёт новый подмаршаллер и маршаллирует связанные данные.
Параметры
-
Cake\ORM\Association$assoc Ассоциация для маршаллирования
-
mixed$value Данные для гидратации. Если это не массив, этот метод вернёт null.
-
array<string, mixed>$options Список опций.
Возвращает
Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null_mergeAssociation() protected
_mergeAssociation(Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface> $original, Cake\ORM\Association $assoc, mixed $value, array<string, mixed> $options): Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null
Создаёт новый подмаршаллер и объединяет связанные данные.
Параметры
-
Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>$original Исходная сущность
-
Cake\ORM\Association$assoc Ассоциация для объединения
-
mixed$value Массив данных для гидратации. Если это не массив, этот метод вернёт null.
-
array<string, mixed>$options Список опций.
Возвращает
Cake\Datasource\EntityInterface|arrayCake\Datasource\EntityInterface>|null_mergeBelongsToMany() protected
_mergeBelongsToMany(arrayCake\Datasource\EntityInterface> $original, Cake\ORM\Association\BelongsToMany $assoc, array $value, array<string, mixed> $options): arrayCake\Datasource\EntityInterface>
Создаёт новый подмаршаллер и объединяет связанные данные для ассоциации BelongstoMany.
Параметры
-
arrayCake\Datasource\EntityInterface>$original Список исходных сущностей.
-
Cake\ORM\Association\BelongsToMany$assoc Ассоциация для маршаллирования
-
array$value Данные для гидратации
-
array<string, mixed>$options Список опций.
Возвращает
arrayCake\Datasource\EntityInterface>_mergeJoinData() protected
_mergeJoinData(arrayCake\Datasource\EntityInterface> $original, Cake\ORM\Association\BelongsToMany $assoc, array $value, array<string, mixed> $options): arrayCake\Datasource\EntityInterface>
Объединяет специальное свойство _joinData в набор сущностей.
Параметры
-
arrayCake\Datasource\EntityInterface>$original Список исходных сущностей.
-
Cake\ORM\Association\BelongsToMany$assoc Ассоциация для маршаллирования
-
array$value Данные для гидратации
-
array<string, mixed>$options Список опций.
Возвращает
arrayCake\Datasource\EntityInterface>_normalizeAssociations() protected
_normalizeAssociations(array|string $associations): array
Возвращает массив из исходного списка ассоциаций, где нотация точек преобразуется в вложенные массивы для обработки другими процедурами.
Параметры
-
array|string$associations Массив включённых ассоциаций.
Возвращает
array_prepareDataAndOptions() protected
_prepareDataAndOptions(array $data, array<string, mixed> $options): array
Возвращает подготовленные для проверки и маршаллирования данные и опции.
Параметры
-
array$data Данные для подготовки.
-
array<string, mixed>$options Опции, переданные этому маршаллеру.
Возвращает
array_validate() protected
_validate(array $data, array<string, mixed> $options, bool $isNew): array
Возвращает ошибки проверки для набора данных на основе переданных опций.
Параметры
-
array$data Данные для проверки.
-
array<string, mixed>$options Опции, переданные этому маршаллеру.
-
bool$isNew Является ли это новой сущностью или сущностью для обновления.
Возвращает
arrayВыбрасывает
RuntimeExceptionЕсли валидатор создать нельзя.
dispatchAfterMarshal() protected
dispatchAfterMarshal(Cake\Datasource\EntityInterface $entity, array $data, array<string, mixed> $options = []): void
Отправляет событие Model.afterMarshal.
Параметры
-
Cake\Datasource\EntityInterface$entity Сущность, которая была маршаллирована.
-
array$data readOnly $data для использования.
-
array<string, mixed>$options опционально Список опций, которые являются readOnly.
Возвращает
voidmany() public
many(array $data, array<string, mixed> $options = []): arrayCake\Datasource\EntityInterface>
Гидратирует множество сущностей и их связанные данные.
Опции:
- validate: Установить в false для отключения валидации. Также может быть строкой правил валидации, которые нужно применить. По умолчанию true/default.
- associated: Ассоциации, перечисленные здесь, также будут маршаллированы. По умолчанию null.
- fields: Разрешённый список полей, которые будут назначены сущности. Если отсутствует, будет использован список доступных полей в сущности. По умолчанию null.
- accessibleFields: Список полей для разрешения или запрета в доступных полях сущности. По умолчанию null.
- forceNew: При включении, ассоциации belongsToMany будут иметь созданные «новые» сущности, когда установлены значения первичного ключа, и запись ещё не существует. Обычно первичный ключ в отсутствующих сущностях будет игнорироваться. По умолчанию false.
Параметры
-
array$data Данные для гидратации.
-
array<string, mixed>$options опционально Список опций
Возвращает
arrayCake\Datasource\EntityInterface>См. также
\Cake\ORM\Entity::$_accessible
merge() public
merge(Cake\Datasource\EntityInterface $entity, array $data, array<string, mixed> $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<string, mixed>$options optional Список параметров.
Возвращает
Cake\Datasource\EntityInterfaceСм. также
mergeMany() public
mergeMany(iterableCake\Datasource\EntityInterface> $entities, array $data, array<string, mixed> $options = []): arrayCake\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<string, mixed>$options optional Список параметров.
Возвращает
arrayCake\Datasource\EntityInterface>См. также
one() public
one(array $data, array<string, mixed> $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<string, mixed>$options optional Список параметров
Возвращает
Cake\Datasource\EntityInterfaceСм. также
\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.3/class-Cake.ORM.Marshaller.html