Spec-Zone.ru › CakePHP 3.5

Класс 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
    Загружает список принадлежностей 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
Класс ассоциации для ассоциации many-to-many.
массив $ids
Список идентификаторов для загрузки.

Возвращает

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

_loadBelongsToMany()source protected

_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[]
Массив сущностей

_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–2018 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.5/class-Cake.ORM.Marshaller.html

Spec-Zone.ru

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