Spec-Zone.ru › CakePHP 3.3

Класс 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
    Загружает список belongs to many по идентификаторам.
  • _loadBelongsToMany() protected
    Загружает список belongs 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 $assoc , array $data , array $options [] )

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

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

Параметры

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

Возвращает

массив
Массив созданных сущностей.

_buildPropertyMap()source protected

_buildPropertyMap( array $data , array $options )

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

Параметры

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

Возвращает

массив

Возможные исключения

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

_loadAssociatedByIds()source protected

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

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

Параметры

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

Возвращает

массив
Массив сущностей.

_loadBelongsToMany()source protected

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

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

Устарело

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

Параметры

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

Возвращает

массив
Массив сущностей.

_marshalAssociation()source protected

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

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

Параметры

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

Возвращает

смешанный тип

_mergeAssociation()source protected

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

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

Параметры

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

Возвращает

смешанный тип

_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
Список параметров.

Возвращает

массив

_mergeJoinData()source protected

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

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

Параметры

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

Возвращает

массив
Массив сущностей

_prepareDataAndOptions()source protected

_prepareDataAndOptions( array $data , array $options )

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

Параметры

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

Возвращает

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

_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: Белый список полей, которые будут назначены сущности. Если отсутствует, будет использован список доступных полей в сущности. По умолчанию null.
  • accessibleFields: Список полей для разрешения или запрещения в доступных полях сущности. По умолчанию null
  • forceNew: При включенном значении, для ассоциаций belongsToMany будут созданы новые сущности, когда установлены значения первичных ключей, и запись еще не существует. Обычно первичный ключ отсутствующих сущностей будет проигнорирован. По умолчанию false.

Параметры

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

Возвращает

массив
Массив гидратированных записей.

См.

\Cake\ORM\Table::newEntities()

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: Белый список полей, которые будут назначены сущности. Если отсутствует, будет использован список доступных полей в сущности.
  • accessibleFields: Список полей для разрешения или запрещения в доступных полях сущности.

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

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

Параметры

Cake\Datasource\EntityInterface $entity

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

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

Возвращает

Cake\Datasource\EntityInterface

mergeMany()source public

mergeMany( array|Traversable $entities , array $data , array $options [] )

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

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

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

Параметры:

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

Параметры

массив|Перечисляемый $entities

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

массив $data
список массивов для объединения в сущности
массив $options optional []
Список параметров.

Возвращает

массив

one()source public

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

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

Параметры:

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

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

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

Параметры

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

Возвращает

Cake\ORM\Entity

См.

\Cake\ORM\Table::newEntity()

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

_normalizeAssociations()source protected

_normalizeAssociations( array $associations )

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

Параметры

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

Возвращает

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

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

$_tablesource

protected Cake\ORM\Table

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

© 2005–2017 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.3/class-Cake.ORM.Marshaller.html

Spec-Zone.ru

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