Класс 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 $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 - Параметры, переданные этому маршаллеру.
Возвращает
массивМассив подготовленных данных и параметров.
_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\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 - список массивов, которые будут объединены в сущности
- массив
$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 - Массив включённых ассоциаций.
Возвращает
массивМассив, в котором обозначение точкой преобразовано во вложенные массивы
Подробности свойств
© 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