Spec-Zone.ru › CakePHP 3.6

Класс 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 deprecated
    Загрузка списка 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\BelongsToMany $assoc , array $data , array $options = [] )

Маршаллирует данные для ассоциаций belongsToMany.

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

Параметры

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

Возвращает

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

Исключения

BadMethodCallException
InvalidArgumentException
RuntimeException

_buildPropertyMap()source protected

_buildPropertyMap( array $data , array $options )

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

Параметры

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

Возвращает

array

Исключения

InvalidArgumentException
Когда ассоциации не существуют.

_loadAssociatedByIds()source protected

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

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

Параметры

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

Возвращает

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

_loadBelongsToMany()source protected deprecated

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

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

Устарело

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

Параметры

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

Возвращает

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

_marshalAssociation()source protected

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

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

Параметры

Cake\ORM\Association $assoc
Ассоциация для маршаллирования
array $value
Данные для гидратации
array $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
Ассоциация для объединения
array $value
Данные для гидратации
array $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
Ассоциация для маршаллирования
array $value
Данные для гидратации
array $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
Ассоциация для маршаллирования
array $value
Данные для гидратации
array $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–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.6/class-Cake.ORM.Marshaller.html

Spec-Zone.ru

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