Spec-Zone.ru › CakePHP 3.2

Класс BelongsToMany

Представляет отношение М - Н, где существует промежуточная таблица, содержащая поля связи между исходной и целевой таблицами.

Примером ассоциации BelongsToMany является статья, относящаяся ко многим тегам.

Cake\ORM\Association использует Cake\Core\ConventionsTrait , Cake\ORM\Locator\LocatorAwareTrait
Extended by Cake\ORM\Association\BelongsToMany использует Cake\ORM\Association\ExternalAssociationTrait
Пространство имён: Cake\ORM\Association
Расположение: ORM/Association/BelongsToMany.php

Краткое описание констант

  • string

    SAVE_APPEND
    'append'
  • string

    SAVE_REPLACE
    'replace'

Унаследованные константы

  • MANY_TO_MANY, MANY_TO_ONE, ONE_TO_MANY, ONE_TO_ONE, STRATEGY_JOIN, STRATEGY_SELECT, STRATEGY_SUBQUERY

Краткое описание свойств

  • $_dependent protected
    boolean

    Следует ли удалять записи в таблице соединения при удалении записи в исходной таблице.

  • $_joinType protected
    string
    Тип соединения, используемого при добавлении ассоциации в запрос
  • $_junctionAssociationName protected
    string

    Имя ассоциации hasMany из целевой таблицы в таблицу соединения

  • $_junctionConditions protected
    null|array
    Условие фильтрации, относящееся к таблице соединения.
  • $_junctionProperty protected
    string

    Имя свойства, содержащего данные из таблицы соединения после загрузки записи из целевой таблицы.

  • $_junctionTable protected
    Cake\ORM\Table
    Экземпляр таблицы соединения
  • $_junctionTableName protected
    string
    Имя таблицы соединения
  • $_saveStrategy protected
    string
    Стратегия сохранения, используемая этой ассоциацией
  • $_strategy protected
    string
    Имя стратегии, используемой для извлечения связанных записей.
  • $_targetConditions protected
    null|array
    Условие фильтрации, относящееся к целевой таблице.
  • $_targetForeignKey protected
    string|array
    Имя поля, представляющего внешний ключ к целевой таблице
  • $_through protected
    string|Cake\ORM\Table
    Экземпляр таблицы для связи соединения.
  • $_validStrategies protected
    array
    Допустимые стратегии для этого типа ассоциации

Унаследованные свойства

  • _bindingKey, _cascadeCallbacks, _className, _conditions, _finder, _foreignKey, _name, _propertyName, _sourceTable, _targetTable _tableLocator _sort

Краткое описание методов

  • _appendJunctionJoin() protected
    Добавление соединения к таблице связи.
  • _appendNotMatching() protected

    Условно добавляет условие в переданный запрос, которое будет искать записи, где нет соответствия с данным связыванием.

  • _buildQuery() protected

    Вспомогательная функция для создания нового объекта запроса для возвращения всех записей в целевой таблице, которые связаны с теми, что указаны в $options из исходной таблицы.

  • _buildResultMap() protected

    Создаёт массив, содержащий результаты из fetchQuery, индексированные по значению foreignKey, соответствующему этому связыванию.

  • _checkPersistenceStatus() protected
    Выбрасывает исключение, если какой-либо из переданных сущностей не сохранён.
  • _collectJointEntities() protected

    Возвращает список связанных сущностей, которые существуют между исходной сущностью и каждой из переданных целевых сущностей.

  • _diffLinks() protected

    Вспомогательный метод, используемый для удаления различий между ссылками, переданными в $existing и $jointEntities. Этот метод вернёт значения из $targetEntities, которые не были удалены при расчёте разницы.

  • _generateJunctionAssociations() protected
    Генерирует связи в таблице связи при необходимости.
  • _generateSourceAssociations() protected
    Генерирует дополнительные связи исходной таблицы при необходимости.
  • _generateTargetAssociations() protected
    Генерирует взаимные связи при необходимости.
  • _joinCondition() protected
    Возвращает false, так как условия соединения определены в таблице связи.
  • _junctionAssociationName() protected

    Возвращает имя связи от целевой таблицы к таблице связи; это имя используется для генерации псевдонима в запросе и для последующего извлечения результатов.

  • _junctionTableName() protected

    Устанавливает имя таблицы связи. Если аргументы не переданы, возвращается текущее настроенное имя. Если имя не найдено, будет сгенерировано имя по умолчанию на основе связанных таблиц.

  • _linkField() protected

    Генерирует строку, используемую как поле таблицы, содержащее значения, по которым должно быть применено фильтрация.

  • _options() protected
    Парсит дополнительные параметры, переданные в конструктор.
  • _saveLinks() protected
    Создаёт связи между исходной сущностью и каждой из переданных целевых сущностей.
  • _saveTarget() protected

    Сохраняет каждую из сущностей в целевой таблице и создаёт связи между родительской сущностью и каждой из сохранённых целевых сущностей.

  • attachTo() public

    Изменяет объект запроса, чтобы включить связанные данные целевой таблицы в окончательный результат.

  • cascadeDelete() public
    Очищает данные в таблице связи для данной сущности.
  • conditions() public

    Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевого связывания. Если параметры не переданы, возвращается текущий список.

  • find() public

    Делегирует операцию поиска методу find целевой таблицы и модифицирует запрос в соответствии с конфигурацией этого связывания.

  • isOwningSide() public

    Возвращает булево значение true, так как обе таблицы «владеют» строками в другой стороне связывания через таблицу связи.

  • junction() public

    Устанавливает экземпляр таблицы для связи. Если аргументы не переданы, возвращается текущий настроенный экземпляр таблицы.

  • junctionConditions() protected

    Возвращает отфильтрованные условия, которые относятся конкретно к таблице связи.

  • link() public

    Связывает исходную сущность с каждой из целевых сущностей, создавая ссылки в таблице связи. Предполагается, что и исходная сущность, и каждая из целевых сущностей уже сохранены; если они помечены как новые или их статус неизвестен, будет выброшено исключение.

  • replaceLinks() public

    Заменяет существующие связи между исходной сущностью и целью на переданные. Этот метод выполняет интеллектуальную очистку: связи, которые уже сохранены и присутствуют в $targetEntities, не будут удалены, новые связи будут созданы для переданных целевых сущностей, которые ещё не находятся в базе данных, а остальные будут удалены.

  • saveAssociated() public

    Принимает сущность из исходной таблицы и проверяет, есть ли поле, соответствующее имени свойства для этого связывания. Найденная сущность будет сохранена в целевой таблице для этого связывания, передав переданные $options.

  • saveStrategy() public

    Устанавливает стратегию, которая должна использоваться для сохранения. Если вызвана без аргументов, вернёт текущую настроенную стратегию.

  • targetConditions() protected
    Возвращает отфильтрованные условия, которые относятся к целевой таблице.
  • targetForeignKey() public

    Устанавливает имя поля, представляющего внешний ключ для целевой таблицы. Если параметры не переданы, возвращается текущее поле.

  • transformRow() public

    Правильно вкладывает значения результатов, связанные с записью, в правильные ключи массива внутри исходных результатов.

  • type() public
    Получить тип связи.
  • unlink() public

    Удаляет все связи между переданной исходной сущностью и каждой из предоставленных целевых сущностей. Этот метод предполагает, что все переданные объекты уже сохранены в базе данных и что каждый из них содержит значение первичного ключа.

Подробное описание метода

_appendJunctionJoin()source protected

_appendJunctionJoin( Cake\ORM\Query $query , string|array $conditions )

Добавление соединения к таблице связи.

Параметры

Cake\ORM\Query $query
Запрос для добавления.
string|array $conditions
Условия запроса для использования.

Возвращает

Cake\ORM\Query
Изменённый запрос.

_appendNotMatching()source protected

_appendNotMatching( Cake\Database\Query $query , array $options )

Условно добавляет условие в переданный запрос, которое будет искать записи, где нет соответствия с данным связыванием.

Параметры

Cake\Database\Query $query
Запрос для изменения
array $options
Массив параметров, содержащий ключ negateMatch.

Переопределяет

Cake\ORM\Association::_appendNotMatching()
END_OF_DOCUMENT_MARKER

_buildQuery()source protected

_buildQuery( array $options )

Вспомогательная функция для построения нового объекта запроса для возврата всех записей в целевой таблице, связанных с теми, которые указаны в $options из исходной таблицы.

Используется для ленивой загрузки записей в целевой таблице на основе условий.

Параметры

массив $options
опции, принимаемые eagerLoader()

Возвращает

Cake\ORM\Query

Выбрасывает

InvalidArgumentException
Когда для ассоциаций требуется ключ, но он не выбран.

_buildResultMap()source protected

_buildResultMap( Cake\ORM\Query $fetchQuery , array $options )

Создаёт массив, содержащий результаты из fetchQuery, индексированные по значению foreignKey, соответствующему этой ассоциации.

Параметры

Cake\ORM\Query $fetchQuery
Запрос для получения результатов
массив $options
Опции, переданные в eager loader

Возвращает

массив

Выбрасывает

RuntimeException
если свойство ассоциации не является частью набора результатов.

_checkPersistenceStatus()source protected

_checkPersistenceStatus( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities )

Выбрасывает исключение, если какой-либо из переданных сущностей не сохранён.

Параметры

Cake\Datasource\EntityInterface $sourceEntity

строка, относящаяся к стороне source этой ассоциации

массив $targetEntities

список сущностей, относящихся к стороне target этой ассоциации

Возвращает

boolean

Выбрасывает

InvalidArgumentException

_collectJointEntities()source protected

_collectJointEntities( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities )

Возвращает список совместных сущностей, которые существуют между исходной сущностью и каждой из переданных целевых сущностей

Параметры

Cake\Datasource\EntityInterface $sourceEntity

строка, относящаяся к стороне источника этой ассоциации.

массив $targetEntities

строки, относящиеся к стороне цели этой ассоциации.

Возвращает

массив

Выбрасывает

InvalidArgumentException

если у какой-либо из сущностей отсутствует значение первичного ключа


_diffLinks()source protected

_diffLinks( Cake\ORM\Query $existing , array $jointEntities , array $targetEntities , array $options [] )

Вспомогательный метод, используемый для удаления различий между ссылками, переданными в $existing и $jointEntities. Этот метод вернёт значения из $targetEntities, которые не были удалены при вычислении разницы.

Параметры

Cake\ORM\Query $existing
запрос для получения существующих ссылок
массив $jointEntities
сущности ссылок, которые должны быть сохранены
массив $targetEntities

сущности в целевой таблице, связанные с $jointEntities

массив $options необязательный []
список опций, принимаемых Table::delete()

Возвращает

массив

_generateJunctionAssociations()source protected

_generateJunctionAssociations( Cake\ORM\Table $junction , Cake\ORM\Table $source , Cake\ORM\Table $target )

Генерирует ассоциации в таблице соединения, если необходимо

Генерирует следующие ассоциации:

  • соединение принадлежит источнику, например, ArticlesTags принадлежит Tags
  • соединение принадлежит цели, например, ArticlesTags принадлежит Articles

Вы можете переопределить эти сгенерированные ассоциации, определив ассоциации с правильными псевдонимами.

Параметры

Cake\ORM\Table $junction
Таблица соединения.
Cake\ORM\Table $source
Исходная таблица.
Cake\ORM\Table $target
Целевая таблица.

_generateSourceAssociations()source protected

_generateSourceAssociations( Cake\ORM\Table $junction , Cake\ORM\Table $source )

Генерирует дополнительные ассоциации исходной таблицы, если необходимо.

Генерирует следующие ассоциации:

  • источник имеет много связей с соединением, например, Tags имеет много связей с ArticlesTags

Вы можете переопределить эти сгенерированные ассоциации, определив ассоциации с правильными псевдонимами.

Параметры

Cake\ORM\Table $junction
Таблица соединения.
Cake\ORM\Table $source
Исходная таблица.

_generateTargetAssociations()source protected

_generateTargetAssociations( Cake\ORM\Table $junction , Cake\ORM\Table $source , Cake\ORM\Table $target )

Генерирует взаимные ассоциации при необходимости.

Генерирует следующие ассоциации:

  • цель имеет много связей с соединением, например, Articles имеет много связей с ArticlesTags
  • цель имеет много связей со многими источниками, например Articles имеет много связей со многими Tags.

Вы можете переопределить эти сгенерированные ассоциации, определив ассоциации с правильными псевдонимами.

Параметры

Cake\ORM\Table $junction
Таблица соединения.
Cake\ORM\Table $source
Исходная таблица.
Cake\ORM\Table $target
Целевая таблица.

_joinCondition()source protected

_joinCondition( array $options )

Возвращает false, так как условия объединения определены в таблице соединения

Параметры

массив $options
список опций, переданных методу attachTo

Возвращает

boolean
false

Выбрасывает

RuntimeException

если количество столбцов в foreignKey не соответствует количеству столбцов в первичном ключе исходной таблицы


Переопределяет

Cake\ORM\Association::_joinCondition()

_junctionAssociationName()source protected

_junctionAssociationName( )

Возвращает имя ассоциации от целевой таблицы к таблице соединения. Это имя используется для генерации псевдонима в запросе и для последующего извлечения результатов.

Возвращает

строка

_junctionTableName()source protected

_junctionTableName( string|null $name null )

Устанавливает имя таблицы соединения. Если нет аргументов, возвращается текущее настроенное имя. Если имя не найдено, генерируется имя по умолчанию на основе связанных таблиц.

Параметры

строка|null $name необязательный null
Имя таблицы соединения.

Возвращает

строка

_linkField()source protected

_linkField( array $options )

Генерирует строку, используемую в качестве поля таблицы, содержащего значения, на основе которых должен быть применён фильтр.

Параметры

массив $options
опции для получения поля ссылки.

Возвращает

строка

_options()source protected

_options( array $opts )

Разбирает дополнительные опции, переданные в конструктор.

Параметры

массив $opts
исходный список опций, переданных в конструктор

Переопределяет

Cake\ORM\Association::_options()

_saveLinks()source protected

_saveLinks( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities , array $options )

Создаёт связи между исходной сущностью и каждой из переданных целевых сущностей

Параметры

Cake\Datasource\EntityInterface $sourceEntity

сущность из исходной таблицы в этой ассоциации

массив $targetEntities

список сущностей, которые необходимо связать с исходной сущностью, используя таблицу соединения

массив $options
список опций, принимаемых Table::save()

Возвращает

boolean
успех

_saveTarget()source protected

_saveTarget( Cake\Datasource\EntityInterface $parentEntity , array|Traversable $entities , array $options )

Сохраняет каждый из сущностей в целевой таблице и создает ссылки между родительской сущностью и каждой из сохранённых целевых сущностей.

Параметры

Cake\Datasource\EntityInterface $parentEntity

родительская сущность, содержащая целевые сущности, которые необходимо сохранить.

array|Traversable $entities

список сущностей для сохранения в целевой таблице и создания связи с родительской сущностью

array $options
список параметров, принимаемых Table::save()

Возвращает

Cake\Datasource\EntityInterface|boolean

родительская сущность после создания всех ссылок, если ошибок не произошло, в противном случае false


Исключение

InvalidArgumentException

если свойство, представляющее ассоциацию в родительской сущности, нельзя пройти по нему


attachTo()source public

attachTo( Cake\ORM\Query $query , array $options [] )

Изменяет объект Query, чтобы включить данные ассоциированной целевой таблицы в окончательный результат.

Массив параметров может содержать следующие ключи:

  • includeFields: Включать ли поля целевой модели в результат
  • foreignKey: Имя поля, используемого в качестве внешнего ключа, если false, он не будет использован
  • conditions: Массив с условиями фильтрации объединения
  • fields: Список полей в целевой таблице, которые следует включить в результат
  • type: Тип объединения (например, INNER)

Параметры

Cake\ORM\Query $query
запрос, который будет изменён для включения данных целевой таблицы
array $options optional []
Дополнительные параметры или переопределения, которые следует учесть

Исключение

RuntimeException

если переданный билдер запросов не возвращает объект запроса


Переопределяет

Cake\ORM\Association::attachTo()

cascadeDelete()source public

cascadeDelete( Cake\Datasource\EntityInterface $entity , array $options [] )

Очистить данные в таблице соединения для данной сущности.

Параметры

Cake\Datasource\EntityInterface $entity
Сущность, которая инициировала каскадное удаление.
array $options optional []
Параметры исходного удаления.

Возвращает

boolean
Успех.

conditions()source public

conditions( array|null $conditions null )

Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации. Если параметры не переданы, возвращается текущий список.

Параметры

array|null $conditions optional null
список условий для использования

Возвращает

array

Переопределяет

Cake\ORM\Association::conditions()

find()source public

find( string|array|null $type null , array $options [] )

Делегирует операцию поиска методу find целевой таблицы и соответствующим образом изменяет запрос на основе конфигурации этой ассоциации.

Если ваша ассоциация включает условия, таблица соединения будет включена в ассоциации запроса.

Параметры

string|array|null $type optional null

тип выполняемого запроса, если передан массив, он будет интерпретирован как параметр $options

array $options optional []
Параметры для поиска

Возвращает

Cake\ORM\Query

См. также

\Cake\ORM\Table::find()

Переопределяет

Cake\ORM\Association::find()

isOwningSide()source public

isOwningSide( Cake\ORM\Table $side )

Возвращает boolean true, так как обе таблицы «владеют» строками в другой стороне ассоциации через таблицу соединения.

Параметры

Cake\ORM\Table $side
Потенциальная таблица с владением

Возвращает

boolean

junction()source public

junction( string|Cake\ORM\Table|null $table null )

Устанавливает экземпляр таблицы для отношения соединения. Если аргументы не переданы, возвращается текущий сконфигурированный экземпляр таблицы.

Параметры

string|Cake\ORM\Table|null $table optional null
Имя или экземпляр таблицы соединения

Возвращает

Cake\ORM\Table

junctionConditions()source protected

junctionConditions( )

Возвращает отфильтрованные условия, которые конкретно ссылаются на таблицу соединения.

Возвращает

array

link()source public

link( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities , array $options [] )

Связывает исходную сущность с каждой из целевых сущностей, создавая связи в таблице соединения. Предполагается, что как исходная сущность, так и каждая из целевых сущностей уже сохранены. Если они помечены как новые или их статус неизвестен, будет выброшено исключение.

При использовании этого метода все сущности в $targetEntities будут добавлены к свойству исходной сущности, соответствующему этому объекту ассоциации.

Этот метод не проверяет уникальность ссылок.

Пример:

$newTags = $tags->find('relevant')->toArray();
$articles->association('tags')->link($article, $newTags);

$article->get('tags') будет содержать все теги из $newTags после связывания

Параметры

Cake\Datasource\EntityInterface $sourceEntity

строка, принадлежащая стороне source этой ассоциации

array $targetEntities

список сущностей, принадлежащих стороне target этой ассоциации

array $options optional []
список параметров, передаваемых внутреннему вызову save

Возвращает

boolean
true при успехе, false в противном случае

Исключение

InvalidArgumentException

если какое-либо из значений в $targetEntities обнаружено как не сохраненное


replaceLinks()source public

replaceLinks( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities , array $options [] )

Заменяет существующие связи ассоциации между исходной сущностью и целью на переданные. Этот метод выполняет интеллектуальную очистку, связи, которые уже сохранены и присутствуют в $targetEntities, не будут удалены, новые связи будут созданы для переданных целевых сущностей, которые ещё не находятся в базе данных, а остальные будут удалены.

Например, если статья связана с тегами «cake» и «framework», и вы передаёте в этот метод массив, содержащий сущности для тегов «cake», «php» и «awesome», то связь для «cake» будет сохранена в базе данных, связь для «framework» будет удалена, а связи для «php» и «awesome» будут созданы.

Существующие ссылки не удаляются и не создаются заново, они либо остаются неизменными, либо обновляются, чтобы не потерять потенциальную дополнительную информацию, хранящуюся в строке соединения. Обновление строки связи можно выполнить, убедившись, что соответствующая переданная целевая сущность содержит свойство соединения с её первичным ключом и любой дополнительной информацией, которая должна храниться.

После успешного выполнения переданный $sourceEntity будет содержать $targetEntities в качестве значения в соответствующем свойстве для данной ассоциации.

Этот метод предполагает, что связи между исходной сущностью и каждой из целевых сущностей уникальны. То есть для любой данной строки в таблице источника может быть только одна связь в таблице соединения, указывающая на любую другую заданную строку в таблице назначения.

Дополнительные параметры для сохранения новых связей могут быть переданы в третьем аргументе, см. Table::save() для получения информации о принимаемых параметрах.

Пример:

$article->tags = [$tag1, $tag2, $tag3, $tag4];
$articles->save($article);
$tags = [$tag1, $tag3];
$articles->association('tags')->replaceLinks($article, $tags);

$article->get('tags') в конце будет содержать только [$tag1, $tag3]

Параметры

Cake\Datasource\EntityInterface $sourceEntity

сущность, сохраненная в таблице источника для данной ассоциации

array $targetEntities
список сущностей из целевой таблицы, которые необходимо связать
array $options optional []

список параметров, которые необходимо передать внутренним вызовам save/delete при сохранении/обновлении новых связей или удалении существующих

Возвращает

boolean
успех

Исключение

InvalidArgumentException

если переданы не сохранённые сущности или если какой-либо из них отсутствует первичный ключ


END_OF_DOCUMENT_MARKER

saveAssociated()source public

saveAssociated( Cake\Datasource\EntityInterface $entity , array $options [] )

Взятие сущности из исходной таблицы и поиск поля, соответствующего имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации, передав предоставленные $options

При использовании стратегии 'append' эта функция будет создавать только новые связи между каждой стороной этой ассоциации. Она не будет удалять существующие, даже если они отсутствуют в массиве сущностей, которые нужно сохранить.

При использовании стратегии 'replace' существующие связи будут удалены, и новые связи будут созданы в соединительной таблице. Если в базе данных существуют связи с некоторыми из сущностей, которые предполагается сохранить с помощью этого метода, они будут обновлены, а не удалены.

Параметры

Cake\Datasource\EntityInterface $entity
сущность из исходной таблицы
массив $options необязательно []

опции, которые будут переданы методу сохранения в целевой таблице

Возвращает

boolean|Cake\Datasource\EntityInterface

false, если $entity не удалось сохранить, в противном случае возвращает сохранённую сущность


Выбрасывает

InvalidArgumentException

если свойство, представляющее ассоциацию в родительской сущности, невозможно пройти


См. также

\Cake\ORM\Table::save()
\Cake\ORM\Association\BelongsToMany::replaceLinks()

saveStrategy()source public

saveStrategy( string|null $strategy null )

Устанавливает стратегию, которая должна использоваться для сохранения. Если вызывается без аргументов, она вернёт текущую настроенную стратегию

Параметры

строка|null $strategy необязательно null
имя стратегии, которое должно использоваться

Возвращает

строка
используемая стратегия сохранения

Выбрасывает

InvalidArgumentException
если передано неверное имя стратегии

targetConditions()source protected

targetConditions( )

Возвращает отфильтрованные условия, которые ссылаются на целевую таблицу.

Любые строковые выражения или объекты выражений также будут возвращены в этом списке.

Возвращает

смешанный тип

Обычно массив. Если условия не являются массивом, условия ассоциации будут возвращены без изменений.


targetForeignKey()source public

targetForeignKey( string|null $key null )

Устанавливает имя поля, представляющего внешний ключ целевой таблицы. Если нет параметров, возвращается текущее поле

Параметры

строка|null $key необязательно null
ключ, который будет использоваться для связывания обеих таблиц

Возвращает

строка

transformRow()source public

transformRow( array $row , string $nestKey , boolean $joined )

Правильно вложенные значения строки результата, связанные с правильными ключами массива в исходных результатах.

Параметры

массив $row
Строка для преобразования
строка $nestKey

Ключ массива, в котором должны быть найдены результаты этой ассоциации

логическое значение $joined

Является ли строка результатом прямого соединения с этой ассоциацией

Возвращает

массив

Переопределяет

Cake\ORM\Association::transformRow()

type()source public

type( )

Получение типа отношения.

Возвращает

строка

unlink()source public

unlink( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities , array|boolean $options [] )

Удаление всех связей между переданной исходной сущностью и каждой из переданных целевых сущностей. Этот метод предполагает, что все переданные объекты уже сохранены в базе данных и что каждый из них содержит значение первичного ключа.

Опции

В дополнение к стандартным опциям, принятым Table::delete(), поддерживаются следующие ключи:

  • cleanProperty: Удаление всех объектов в $targetEntities, которые хранятся в $sourceEntity (по умолчанию: true)

По умолчанию этот метод удалит каждый из объектов сущности, хранящихся внутри исходной сущности.

Пример:

$article->tags = [$tag1, $tag2, $tag3, $tag4];
$tags = [$tag1, $tag2, $tag3];
$articles->association('tags')->unlink($article, $tags);

$article->get('tags') будет содержать только [$tag4] после удаления в базе данных

Параметры

Cake\Datasource\EntityInterface $sourceEntity

сущность, сохранённая в исходной таблице для этой ассоциации

массив $targetEntities

список сущностей, сохранённых в целевой таблице для этой ассоциации

массив|логическое значение $options необязательно []

список опций, которые будут переданы внутреннему вызову delete, или boolean

Возвращает

логическое значение
Успех

Выбрасывает

InvalidArgumentException

если переданы не сохранённые сущности или какой-либо из них отсутствует первичный ключ


Методы, унаследованные от Cake\ORM\Association

__call()source public

__call( string $method , array $argument )

Делегирует вызовы методов целевой таблице.

Параметры

строка $method
имя вызываемого метода
массив $argument
Список аргументов, переданных функции

Возвращает

смешанный тип

Выбрасывает

BadMethodCallException

__construct()source public

__construct( string $alias , array $options [] )

Конструктор. Подклассы могут переопределить функцию _options, чтобы получить исходный список переданных опций, если ожидают какой-либо другой специальный ключ

Параметры

строка $alias
Имя ассоциации
массив $options необязательно []
Список свойств, которые нужно установить для этого объекта

__get()source public

__get( string $property )

Делегирует получение свойств целевой таблице. Это удобно для получения ассоциаций этой ассоциации

Параметры

строка $property
Имя свойства

Возвращает

Cake\ORM\Association

Выбрасывает

RuntimeException
если ассоциация с таким именем не существует

__isset()source public

__isset( string $property )

Делегирует вызов isset целевой таблице. Это удобно для проверки наличия другой ассоциации целевой таблицы с указанным именем

Параметры

строка $property
Имя свойства

Возвращает

логическое значение
true, если свойство существует

_appendFields()source protected

_appendFields( Cake\ORM\Query $query , Cake\ORM\Query $surrogate , array $options )

Вспомогательная функция, которая используется для условного добавления полей к выборке запроса из полей, найденных в другом объекте запроса.

Параметры

Cake\ORM\Query $query
запрос, к которому будут добавлены поля
Cake\ORM\Query $surrogate
запрос, содержащий поля для копирования
массив $options
опции, переданные методу attachTo

_bindNewAssociations()source protected

_bindNewAssociations( Cake\ORM\Query $query , Cake\ORM\Query $surrogate , array $options )

Применяет все присоединяемые ассоциации к $query из содержаний, найденных в $surrogate запросе.

Копирует все содержащиеся ассоциации из запроса $surrogate в переданный $query. Содержания изменяются таким образом, чтобы они соответствовали цепочке ассоциаций, из которой они возникли.

Параметры

Cake\ORM\Query $query
запрос, к которому будут присоединены ассоциации
Cake\ORM\Query $surrogate
запрос, содержащий содержащиеся ассоциации
массив $options
опции, переданные методу attachTo
END_OF_DOCUMENT_MARKER

_dispatchBeforeFind()source protected

_dispatchBeforeFind( Cake\ORM\Query $query )

Вызывает beforeFind на целевой таблице для запроса, к которому присоединяется эта ассоциация

Параметры

Cake\ORM\Query $query
запрос, к которому присоединяется эта ассоциация

_extractFinder()source protected

_extractFinder( string|array $finderData )

Вспомогательный метод для вывода запрошенного нахождения и его параметров.

Возвращает полученные параметры из нахождения $type.

Примеры:

Следующее вызовет поиск 'translations' со значением нахождения в качестве параметров: $query->contain(['Comments' => ['finder' => ['translations']]]); $query->contain(['Comments' => ['finder' => ['translations' => []]]]); $query->contain(['Comments' => ['finder' => ['translations' => ['locales' => ['en_US']]]]]);

Параметры

строка|массив $finderData

Имя поиска или массив, имеющий имя в качестве ключа и параметры в качестве значения.

Возвращаемое значение

массив

_formatAssociationResults()source protected

_formatAssociationResults( Cake\ORM\Query $query , Cake\ORM\Query $surrogate , array $options )

Добавляет функцию форматирования к переданному $query если $surrogate запрос объявляет другую функцию форматирования. Поскольку $surrogate запрос соответствует связанной целевой таблице, результирующее форматирование будет результатом применения функций форматирования только к свойству, соответствующему данной таблице.

Параметры

Cake\ORM\Query $query
запрос, к которому будет применено форматирование
Cake\ORM\Query $surrogate

запрос с функциями форматирования для связанной целевой таблицы.

массив $options
параметры, передаваемые в метод attachTo

_propertyName()source protected

_propertyName( )

Возвращает имя свойства по умолчанию, основанное на имени ассоциации.

Возвращаемое значение

строка

bindingKey()source public

bindingKey( string|null $key null )

Устанавливает имя поля, представляющего поле привязки к целевой таблице. При отсутствии явного указания используется первичный ключ таблицы со стороны владельца.

Если параметры не переданы, возвращается текущее поле.

Параметры

строка|null $key необязательно null
поле таблицы, которое будет использоваться для связи обеих таблиц

Возвращаемое значение

строка|массив

canBeJoined()source public

canBeJoined( array $options [] )

Можно ли эту ассоциацию выразить напрямую в соединении запроса

Параметры

массив $options необязательно []
ключ пользовательских параметров, которые могут изменить возвращаемое значение

Возвращаемое значение

boolean

cascadeCallbacks()source public

cascadeCallbacks( boolean|null $cascadeCallbacks null )

Устанавливает, должны ли срабатывать каскадные удаления с вызовом обратных вызовов. Если аргументы не переданы, возвращается текущее настроенное значение

Параметры

boolean|null $cascadeCallbacks необязательно null
значение переключателя каскадных обратных вызовов

Возвращаемое значение

boolean

className()source public

className( )

Имя класса объекта целевой таблицы

Возвращаемое значение

строка

defaultRowValue()source public

defaultRowValue( array $row , boolean $joined )

Возвращает измененную строку после добавления свойства для этой ассоциации со значением по умолчанию, в зависимости от того, была ли ассоциация присоединена или получена извне.

Параметры

массив $row
строка, для которой нужно установить значение по умолчанию.
boolean $joined

Является ли строка результатом прямого соединения с этой ассоциацией

Возвращаемое значение

массив

deleteAll()source public

deleteAll( mixed $conditions )

Делегирует операцию удаления методу deleteAll целевой таблицы

Параметры

смешанное $conditions

Условия, которые нужно использовать, принимает все, что может принять Query::where().

Возвращаемое значение

boolean
Успех Возвращает true, если одно или несколько строк затронуты.

См. также

\Cake\ORM\Table::deleteAll()

dependent()source public

dependent( boolean|null $dependent null )

Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.

Это в основном используется для указания того, что записи должны быть удалены, если владеющая запись в исходной таблице удалена.

Если параметры не переданы, возвращается текущее значение.

Параметры

boolean|null $dependent необязательно null
Установить режим зависимости. Используйте null для чтения текущего состояния.

Возвращаемое значение

boolean

eagerLoader()source abstract public

eagerLoader( array $options )

Жадно загружает список записей в целевой таблице, связанных с другим набором записей в исходной таблице. Источник записей можно указать двумя способами: во-первых, передав объект Query, настроенный для поиска в исходной таблице, а во-вторых, явно передав массив значений первичных ключей из исходной таблицы.

Требуемый способ передачи связанных записей источника контролируется «стратегией». При использовании стратегии подзапроса потребуется запрос к исходной таблице. При использовании стратегии выбора будет использоваться список первичных ключей.

Возвращает лямбда-функцию, которая должна выполняться для каждой возвращённой записи в определённом запросе. Эта функция будет отвечать за внедрение полей, связанных с каждой конкретной переданной строкой.

Массив параметров принимает следующие ключи:

  • запрос: Объект Query, настроенный для поиска записей исходной таблицы
  • ключи: Список значений первичных ключей из исходной таблицы
  • внешнийКлюч: Имя поля, используемого для связи обеих таблиц
  • условия: Список условий, которые нужно передать методу where() запроса
  • сортировка: Направление, в котором должны возвращаться записи
  • поля: Список полей для выбора из целевой таблицы
  • включить: Список связанных таблиц для жадной загрузки ассоциаций с целевой таблицей
  • стратегия: Имя стратегии, которую нужно использовать для поиска записей целевой таблицы
  • ключВложенности: Ключ массива, под которым будут находиться результаты при преобразовании строки

Параметры

массив $options
Параметры для жадной загрузки.

Возвращаемое значение

Лямбда-функция

finder()source public

finder( string|null $finder null )

Устанавливает поиск по умолчанию для получения строк из целевой таблицы. Если параметры не переданы, возвращает текущее имя настроенного поиска.

Параметры

строка|null $finder необязательно null
имя поиска, которое нужно использовать

Возвращаемое значение

строка

foreignKey()source public

foreignKey( string|null $key null )

Устанавливает имя поля, представляющего внешний ключ к целевой таблице. Если параметры не переданы, возвращается текущее поле.

Параметры

строка|null $key необязательно null
ключ, который нужно использовать для связи обеих таблиц

Возвращаемое значение

строка|массив

joinType()source public

joinType( string|null $type null )

Устанавливает тип соединения, который будет использоваться при добавлении ассоциации в запрос. Если аргументы не переданы, возвращается текущий настроенный тип.

Параметры

string|null $type необязательно null
тип соединения (например, INNER)

Возвращает

string

name()source public

name( string|null $name null )

Устанавливает имя для этой ассоциации. Если аргументы не переданы, возвращается текущее настроенное имя.

Параметры

string|null $name необязательно null
Присваиваемое имя

Возвращает

string

property()source public

property( string|null $name null )

Устанавливает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы. Если аргументы не переданы, возвращается текущий настроенный тип.

Параметры

string|null $name необязательно null
Имя свойства ассоциации. Используйте null, чтобы прочитать текущее значение.

Возвращает

string

source()source public

source( Cake\ORM\Table $table null )

Устанавливает экземпляр таблицы для исходной стороны ассоциации. Если аргументы не переданы, возвращается текущий настроенный экземпляр таблицы.

Параметры

Cake\ORM\Table $table необязательно null
экземпляр, который будет назначен как сторона источника

Возвращает

Cake\ORM\Table

strategy()source public

strategy( string|null $name null )

Устанавливает имя стратегии, которая будет использоваться для извлечения связанных записей. Имейте в виду, что некоторые типы ассоциаций могут не реализовывать, но по умолчанию стратегию, что делает любые изменения в этом параметре недействительными. Если аргументы не переданы, возвращается текущая настроенная стратегия.

Параметры

string|null $name необязательно null
Тип стратегии. Используйте null, чтобы прочитать текущее значение.

Возвращает

string

Выбрасывает

InvalidArgumentException
При предоставлении неверной стратегии.

target()source public

target( Cake\ORM\Table $table null )

Устанавливает экземпляр таблицы для целевой стороны ассоциации. Если аргументы не переданы, возвращается текущий настроенный экземпляр таблицы.

Параметры

Cake\ORM\Table $table необязательно null
экземпляр, который будет назначен как целевая сторона

Возвращает

Cake\ORM\Table

updateAll()source public

updateAll( array $fields , mixed $conditions )

Делегирует операцию обновления методу updateAll целевой таблицы.

Параметры

array $fields
Хэш поля => новое значение.
mixed $conditions

Условие, которое будет использоваться. Принимает все, что Query::where() может принять.

Возвращает

boolean
Успех Возвращает true, если одна или несколько строк были затронуты.

См. также

\Cake\ORM\Table::updateAll()

Методы, используемые из Cake\ORM\Association\ExternalAssociationTrait

_defaultOptions()source protected

_defaultOptions( )

Возвращает параметры по умолчанию, используемые для eagerLoader.

Возвращает

array

canBeJoined()source public

canBeJoined( array $options [] )

Возвращает, может ли эта ассоциация быть выражена непосредственно в соединении запроса.

Параметры

array $options необязательно []
пользовательский ключ параметров, который может изменить возвращаемое значение.

Возвращает

boolean

Если ключ 'matching' в $option имеет значение true, эта функция вернет true; в противном случае — false.


defaultRowValue()source public

defaultRowValue( $row , $joined )

foreignKey()source public

foreignKey( string|null $key null )

Устанавливает имя поля, представляющего внешний ключ к исходной таблице. Если параметры не переданы, возвращается текущее поле.

Параметры

string|null $key необязательно null
ключ, который будет использоваться для связывания обеих таблиц вместе

Возвращает

string

sort()source public

sort( mixed $sort null )

Устанавливает порядок сортировки, в котором должны возвращаться целевые записи. Если аргументы не переданы, возвращается текущее значение.

Параметры

mixed $sort необязательно null
Оператор порядка, совместимый с find()

Возвращает

mixed

Методы, используемые из Cake\Core\ConventionsTrait

_camelize()source protected

_camelize( string $name )

Создает пришлизованную версию $name

Параметры

string $name
имя

Возвращает

string
Пришлизованное имя

_entityName()source protected

_entityName( string $name )

Создает правильное имя сущности (единственное число) для указанного имени

Параметры

string $name
Имя

Возвращает

string
Пришлизованное и множественное имя модели

_fixtureName()source protected

_fixtureName( string $name )

Создает имя фикстуры

Параметры

string $name
Имя класса модели

Возвращает

string
Ключ модели единственного числа

_modelKey()source protected

_modelKey( string $name )

Создает правильный подчеркнутый ключ модели для ассоциаций

Если вход содержит точку, предполагается, что правая часть — это фактическое имя таблицы.

Параметры

string $name
Имя класса модели

Возвращает

string
Ключ модели единственного числа

_modelNameFromKey()source protected

_modelNameFromKey( string $key )

Создает правильное имя модели из внешнего ключа

Параметры

string $key
Внешний ключ

Возвращает

string
Имя модели

_pluginNamespace()source protected

_pluginNamespace( string $pluginName )

Возвращает пространство имен плагина

Параметры

string $pluginName
Имя плагина

Возвращает

string
Пространство имен плагина
END_OF_DOCUMENT_MARKER

_pluginPath()source protected

_pluginPath( string $pluginName )

Найти правильный путь для плагина. Сканирует $pluginPaths для нужного плагина.

Параметры

строка $pluginName
Название плагина, например DebugKit

Возвращаемые значения

строка
путь к нужному плагину.

_pluralHumanName()source protected

_pluralHumanName( string $name )

Создаёт множественное число для человекочитаемого имени, используемого в представлениях.

Параметры

строка $name
Имя контроллера

Возвращаемые значения

строка
Множественное число человекочитаемого имени

_singularHumanName()source protected

_singularHumanName( string $name )

Создаёт единственное число для человекочитаемого имени, используемого в представлениях.

Параметры

строка $name
Имя контроллера

Возвращаемые значения

строка
Единственное число человекочитаемого имени

_singularName()source protected

_singularName( string $name )

Создаёт единственное число имени для использования в представлениях.

Параметры

строка $name
Используемое имя

Возвращаемые значения

строка
Имя переменной

_variableName()source protected

_variableName( string $name )

Создаёт множественное число имени переменной для представлений.

Параметры

строка $name
Используемое имя

Возвращаемые значения

строка
Множественное число имени для представлений

Методы, используемые из Cake\ORM\Locator\LocatorAwareTrait

tableLocator()source public

tableLocator( Cake\ORM\Locator\LocatorInterface $tableLocator null )

Устанавливает локатор таблицы. Если параметры не переданы, возвращает текущий используемый локатор.

Параметры

Cake\ORM\Locator\LocatorInterface $tableLocator необязательно null
Экземпляр LocatorInterface.

Возвращаемые значения

Cake\ORM\Locator\LocatorInterface

Подробное описание свойств

$_dependentsource

protected boolean

Определяет, нужно ли удалять записи в таблице связи при удалении записи в основной таблице.

По умолчанию true для обратной совместимости.

true

$_joinTypesource

protected string

Тип соединения, используемый при добавлении ассоциации в запрос

'INNER'

$_junctionAssociationNamesource

protected string

Имя ассоциации hasMany от целевой таблицы к таблице связи

$_junctionConditionssource

protected null|array

Отфильтрованные условия, относящиеся к таблице связи.

$_junctionPropertysource

protected string

Имя свойства, которое будет содержать данные из таблицы связи после загрузки записи из целевой таблицы

'_joinData'

$_junctionTablesource

protected Cake\ORM\Table

Экземпляр таблицы связи

$_junctionTableNamesource

protected string

Имя таблицы связи

$_saveStrategysource

protected string

Стратегия сохранения, используемая данной ассоциацией

self::SAVE_REPLACE

$_strategysource

protected string

Имя стратегии для получения связанных записей.

self::STRATEGY_SELECT

$_targetConditionssource

protected null|array

Отфильтрованные условия, относящиеся к целевой таблице.

$_targetForeignKeysource

protected string|array

Имя поля, представляющего внешний ключ к целевой таблице

$_throughsource

protected string|Cake\ORM\Table

Экземпляр таблицы для отношения связи.

$_validStrategiessource

protected array

Допустимые стратегии для этого типа ассоциации

[self::STRATEGY_SELECT, self::STRATEGY_SUBQUERY]

© 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.Association.BelongsToMany.html

Spec-Zone.ru

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