Класс Marshaller
Содержит логику преобразования данных массива в сущности.
Полезно при преобразовании данных запроса в сущности.
- Cake\ORM\Marshaller использует Cake\ORM\AssociationsNormalizerTrait
См.: \Cake\ORM\Table::newEntity()
См.: \Cake\ORM\Table::newEntities()
См.: \Cake\ORM\Table::patchEntity()
См.: \Cake\ORM\Table::patchEntities()
Расположение: ORM/Marshaller.php
Краткое описание свойств
- Экземпляр таблицы, для которой предназначен данный маршаллер.
$_tableprotected
Краткое описание методов
- __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 - Параметры, переданные в этот маршаллер.
Возвращает
массивМассив, содержащий подготовленные данные и параметры.
_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 - Данные для гидратации.
- массив
$optionsoptional [] - Список параметров
Возвращает
массивМассив гидратированных записей.
См.
\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 - список пар ключ-значение, которые будут объединены в сущность
- массив
$optionsoptional [] - Список параметров.
Возвращает
Cake\Datasource\EntityInterfacemergeMany()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 - список массивов для объединения в сущности
- массив
$optionsoptional [] - Список параметров.
Возвращает
массив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 - Данные для гидратации.
- массив
$optionsoptional [] - Список параметров
Возвращает
Cake\ORM\EntityСм.
\Cake\ORM\Table::newEntity()Методы, используемые из Cake\ORM\AssociationsNormalizerTrait
_normalizeAssociations()source protected
_normalizeAssociations( array $associations )
Возвращает массив из исходного переданного списка ассоциаций, где обозначение точек преобразуется во вложенные массивы, чтобы их можно было обработать другими процедурами
Параметры
- массив
$associations - Массив включенных ассоциаций.
Возвращает
массивМассив, в котором обозначение точек преобразовано во вложенные массивы
Подробности свойств
© 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