Spec-Zone.ru › CakePHP 3.8

Класс Marshaller

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

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

Cake\ORM\Marshaller использует Cake\ORM\AssociationsNormalizerTrait
Пространство имён: Cake\ORM
См.: \Cake\ORM\Table::newEntity()
См.: \Cake\ORM\Table::newEntities()
См.: \Cake\ORM\Table::patchEntity()
См.: \Cake\ORM\Table::patchEntities()
Расположение: ORM/Marshaller.php

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

  • $_table protected
    Cake\ORM\Table
    Экземпляр таблицы, для которой предназначен этот маршаллер.

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

  • __construct() public
    Конструктор.
  • _belongsToMany() protected
    Преобразует данные для ассоциаций belongsToMany.
  • _buildPropertyMap() protected
    Создаёт карту свойств => вызываемых функций для маршаллирования.
  • _loadAssociatedByIds() protected
    Загружает список принадлежностей many-to-many по идентификаторам.
  • _loadBelongsToMany() protected deprecated
    Загружает список принадлежностей many-to-many по идентификаторам.
  • _marshalAssociation() protected
    Создаёт новый под-маршаллер и преобразует связанные данные.
  • _mergeAssociation() protected
    Создаёт новый под-маршаллер и объединяет связанные данные.
  • _mergeBelongsToMany() protected

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

  • _mergeJoinData() protected
    Объединяет специальное свойство _joinData в набор сущностей.
  • _prepareDataAndOptions() protected
    Возвращает данные и параметры, подготовленные для проверки и маршаллирования.
  • _validate() protected
    Возвращает ошибки проверки для набора данных на основе переданных параметров.
  • many() public
    Гидратирует множество сущностей и их связанные данные.
  • merge() public

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

  • mergeMany() public

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

  • one() public
    Гидратирует одну сущность и её связанные данные.

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

__construct()source public

__construct( Cake\ORM\Table $table )

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

Параметры

Cake\ORM\Table $table
Таблица, для которой предназначен этот маршаллер.

_belongsToMany()source protected

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

Преобразует данные для ассоциаций belongsToMany.

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

Параметры

Cake\ORM\Association\BelongsToMany $assoc
Ассоциация для преобразования.
массив $data
Данные для преобразования в сущности.
массив $options по умолчанию []
Список параметров.

Возвращает

Cake\Datasource\EntityInterface[]
Массив созданных сущностей.

Исключения

BadMethodCallException
InvalidArgumentException
RuntimeException

_buildPropertyMap()source protected

_buildPropertyMap( array $data , array $options )

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

Параметры

массив $data
Преобразуемые данные.
массив $options
Список параметров, содержащий ключ 'associated'.

Возвращает

массив

Исключения

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

_loadAssociatedByIds()source protected

_loadAssociatedByIds( Cake\ORM\Association $assoc , array $ids )

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

Параметры

Cake\ORM\Association $assoc
Класс ассоциации для ассоциации belongsToMany.
массив $ids
Список идентификаторов для загрузки.

Возвращает

Cake\Datasource\EntityInterface[]
Массив сущностей.

_loadBelongsToMany()source protected deprecated

_loadBelongsToMany( Cake\ORM\Association $assoc , array $ids )

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

Устарело

Используйте _loadAssociatedByIds()

Параметры

Cake\ORM\Association $assoc
Класс ассоциации для ассоциации belongsToMany.
массив $ids
Список идентификаторов для загрузки.

Возвращает

Cake\Datasource\EntityInterface[]
Массив сущностей.

_marshalAssociation()source protected

_marshalAssociation( Cake\ORM\Association $assoc , array $value , array $options )

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

Параметры

Cake\ORM\Association $assoc
Ассоциация для преобразования
массив $value
Данные для гидратации
массив $options
Список параметров.

Возвращает

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

_mergeAssociation()source protected

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

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

Параметры

Cake\Datasource\EntityInterface|Cake\Datasource\EntityInterface[] $original
Исходная сущность
Cake\ORM\Association $assoc
Ассоциация для объединения
массив $value
Данные для гидратации
массив $options
Список параметров.

Возвращает

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

_mergeBelongsToMany()source protected

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

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

Параметры

Cake\Datasource\EntityInterface $original
Исходная сущность
Cake\ORM\Association $assoc
Ассоциация для маршаллирования
массив $value
Данные для гидратации
массив $options
Список параметров.

Возвращает

Cake\Datasource\EntityInterface[]

_mergeJoinData()source protected

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

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

Параметры

Cake\Datasource\EntityInterface $original
Исходная сущность
Cake\ORM\Association\BelongsToMany $assoc
Ассоциация для маршаллирования
массив $value
Данные для гидратации
массив $options
Список параметров.

Возвращает

Cake\Datasource\EntityInterface[]
Массив сущностей
END_OF_DOCUMENT_MARKER

_prepareDataAndOptions()source protected

_prepareDataAndOptions( array $data , array $options )

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

Параметры

массив $data
Данные для подготовки.
массив $options
Параметры, переданные этому обработчику.

Возвращаемое значение

массив
Массив, содержащий подготовленные данные и параметры.

_validate()source protected

_validate( array $data , array $options , boolean $isNew )

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

Параметры

массив $data
Данные для проверки.
массив $options
Параметры, переданные этому обработчику.
логическое значение $isNew
Является ли это новым объектом или объектом для обновления.

Возвращаемое значение

массив
Список ошибок проверки.

Исключения

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

many()source public

many( array $data , array $options = [] )

Загрузка нескольких объектов и их связанных данных.

Параметры:

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

Параметры

массив $data
Данные для загрузки.
массив $options необязательно []
Список параметров

Возвращаемое значение

Cake\Datasource\EntityInterface[]
Массив загруженных записей.

См. также

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

merge()source public

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

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

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

Параметры:

  • associated: Здесь перечислены ассоциации, которые также будут обработаны.
  • validate: Выполнять ли валидацию данных перед загрузкой объектов. Также может быть строкой, использующей конкретный набор правил валидатора. По умолчанию true/default.
  • fieldList: (устарело) С версии 3.4.0. Используйте вместо этого fields
  • fields: Белый список полей, которые будут назначены объекту. Если отсутствует, будет использоваться список доступных полей в объекте.
  • accessibleFields: Список полей, разрешаемых или запрещаемых в доступных полях объекта.

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

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

Параметры

Cake\Datasource\EntityInterface $entity

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

массив $data
список пар ключ-значение полей, которые нужно объединить в объект
массив $options необязательно []
Список параметров.

Возвращаемое значение

Cake\Datasource\EntityInterface

См. также

\Cake\ORM\Entity::$_accessible

mergeMany()source public

mergeMany( Cake\Datasource\EntityInterface[]|Traversable $entities , array $data , array $options = [] )

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

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

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

Параметры:

  • validate: Выполнять ли валидацию данных перед загрузкой объектов. Также может быть строкой, использующей конкретный набор правил валидатора. По умолчанию true/default.
  • associated: Здесь перечислены ассоциации, которые также будут обработаны.
  • fieldList: (устарело) С версии 3.4.0. Используйте вместо этого fields
  • fields: Белый список полей, которые будут назначены объекту. Если отсутствует, будет использоваться список доступных полей в объекте.
  • accessibleFields: Список полей, разрешаемых или запрещаемых в доступных полях объекта.

Параметры

Cake\Datasource\EntityInterface[]|Проходимый $entities

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

массив $data
список массивов, которые нужно объединить в объекты
массив $options необязательно []
Список параметров.

Возвращаемое значение

Cake\Datasource\EntityInterface[]

См. также

\Cake\ORM\Entity::$_accessible

one()source public

one( array $data , array $options = [] )

Загрузка одного объекта и его связанных данных.

Параметры:

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

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

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

Параметры

массив $data
Данные для загрузки.
массив $options необязательно []
Список параметров

Возвращаемое значение

Cake\Datasource\EntityInterface

См. также

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

Методы, используемые из Cake\ORM\AssociationsNormalizerTrait

_normalizeAssociations()source protected

_normalizeAssociations( array $associations )

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

Параметры

массив $associations
Массив включенных ассоциаций.

Возвращаемое значение

массив
Массив, в котором обозначение точек преобразовано во вложенные массивы

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

$_tablesource

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/3.8/class-Cake.ORM.Marshaller.html

Spec-Zone.ru

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