Spec-Zone.ru › CakePHP 3.7

Класс 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 по id.
  • _loadBelongsToMany() protected deprecated
    Загрузка списка belongs to many по id.
  • _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 optional []
Список опций.

Возвращает

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 )

Загрузка списка belongs to many по id.

Параметры

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

Возвращает

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

_loadBelongsToMany()source protected deprecated

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

Загрузка списка belongs to many по id.

Устарело

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

Параметры

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

Возвращает

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

Spec-Zone.ru

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