Spec-Zone.ru › CakePHP 3.2

Класс 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 $options )

Создаёт карту свойств => имён ассоциаций.

Параметры

массив $options
Список параметров, содержащий ключ 'associated'.

Возвращает

массив

Выбрасывает

RuntimeException
Если ассоциаций не существует.

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

Возвращает

mixed

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

Возвращает

mixed

_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 необязательно []
Список опций

Возвращает

массив
Массив загруженных записей.

См. также

\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 необязательно []
Список опций.

Возвращает

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 необязательно []
Список опций.

Возвращает

массив

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 необязательно []
Список опций

Возвращает

Cake\ORM\Entity

См. также

\Cake\ORM\Table::newEntity()

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

_normalizeAssociations()source protected

_normalizeAssociations( array $associations )

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

Параметры

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

Возвращает

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

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

$_tablesource

protected Cake\ORM\Table

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

© 2005–2016 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.
http://api.cakephp.org/3.2/class-Cake.ORM.Marshaller.html

Spec-Zone.ru

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