Класс 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Загружает список принадлежностей many-to-many по идентификаторам.
- _loadBelongsToMany() protectedЗагружает список принадлежностей many-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необязательно [] - Список параметров.
Возвращает
arrayМассив созданных сущностей.
Выбрасывает
BadMethodCallExceptionInvalidArgumentException
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 )
Загружает список принадлежностей many-to-many по идентификаторам.
Параметры
-
Cake\ORM\Association$assoc - Класс ассоциации для ассоциации many-to-many.
- array
$ids - Список идентификаторов для загрузки.
Возвращает
arrayМассив сущностей.
_loadBelongsToMany()source protected
_loadBelongsToMany( Cake\ORM\Association $assoc , array $ids )
Загружает список принадлежностей many-to-many по идентификаторам.
Устарело
Используйте _loadAssociatedByIds()Параметры
-
Cake\ORM\Association$assoc - Класс ассоциации для ассоциации many-to-many.
- array
$ids - Список идентификаторов для загрузки.
Возвращает
arrayМассив сущностей.
_marshalAssociation()source protected
_marshalAssociation( Cake\ORM\Association $assoc , array $value , array $options )
Создаёт новый под-маршаллер и маршаллит связанные данные.
Параметры
-
Cake\ORM\Association$assoc - Ассоциация для маршаллирования
- array
$value - Данные для гидратации
- array
$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 - Ассоциация для объединения
- array
$value - Данные для гидратации
- array
$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 - Ассоциация для маршаллирования
- array
$value - Данные для гидратации
- array
$options - Список параметров.
Возвращает
array_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 - Список параметров.
Возвращает
arrayМассив сущностей
_prepareDataAndOptions()source protected
_prepareDataAndOptions( array $data , array $options )
Возвращает данные и параметры, подготовленные для валидации и маршаллирования.
Параметры
- массив
$data - Данные для подготовки.
- массив
$options - Параметры, переданные этому маршаллеру.
Возвращает
массивМассив, содержащий подготовленные данные и параметры.
_validate()source protected
_validate( array $data , array $options , boolean $isNew )
Возвращает ошибки валидации для набора данных на основе переданных параметров.
Параметры
- массив
$data - Данные для валидации.
- массив
$options - Параметры, переданные этому маршаллеру.
- boolean
$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\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::$_accessiblemergeMany()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: (устарело) С версии 3.4.0. Используйте вместо него fields
- fields: Список полей, которые будут присвоены сущности. Если отсутствует, будет использован список доступных полей в сущности.
- accessibleFields: Список полей для разрешения или запрета в доступных полях сущности.
Параметры
- массив|Перечислимый
$entities сущности, в которые будут объединены данные
- массив
$data - список массивов для объединения в сущности
- массив
$optionsнеобязательно [] - Список параметров.
Возвращает
массивСм. также
\Cake\ORM\Entity::$_accessibleone()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 - Массив включенных ассоциаций.
Возвращает
массивМассив с преобразованными обозначениями точками во вложенные массивы
Подробное описание свойств
© 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.4/class-Cake.ORM.Marshaller.html