Класс 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 по id.
- Загрузка списка 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 - Данные для преобразования в сущности.
- массив
$optionsoptional [] - Список опций.
Возвращает
Cake\Datasource\EntityInterface[]Массив созданных сущностей.
Исключения
BadMethodCallExceptionInvalidArgumentException
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::$_accessiblemergeMany()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::$_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–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