Класс BelongsToMany
Представляет отношение М - Н, где существует промежуточная таблица, содержащая поля связи между исходной и целевой таблицами.
Примером ассоциации BelongsToMany является статья, относящаяся ко многим тегам.
- Cake\ORM\Association использует Cake\Core\ConventionsTrait , Cake\ORM\Locator\LocatorAwareTrait
-
Cake\ORM\Association\BelongsToMany использует Cake\ORM\Association\ExternalAssociationTrait
Краткое описание констант
-
string'append' -
string'replace'
Унаследованные константы
-
MANY_TO_MANY,MANY_TO_ONE,ONE_TO_MANY,ONE_TO_ONE,STRATEGY_JOIN,STRATEGY_SELECT,STRATEGY_SUBQUERY
Краткое описание свойств
-
$_dependentprotectedbooleanСледует ли удалять записи в таблице соединения при удалении записи в исходной таблице.
-
$_joinTypeprotectedТип соединения, используемого при добавлении ассоциации в запросstring -
$_junctionAssociationNameprotectedstringИмя ассоциации hasMany из целевой таблицы в таблицу соединения
-
$_junctionConditionsprotectedУсловие фильтрации, относящееся к таблице соединения.null|array -
$_junctionPropertyprotectedstringИмя свойства, содержащего данные из таблицы соединения после загрузки записи из целевой таблицы.
- Экземпляр таблицы соединения
$_junctionTableprotected -
$_junctionTableNameprotectedИмя таблицы соединенияstring -
$_saveStrategyprotectedСтратегия сохранения, используемая этой ассоциациейstring -
$_strategyprotectedИмя стратегии, используемой для извлечения связанных записей.string -
$_targetConditionsprotectedУсловие фильтрации, относящееся к целевой таблице.null|array -
$_targetForeignKeyprotectedИмя поля, представляющего внешний ключ к целевой таблицеstring|array -
$_throughprotectedЭкземпляр таблицы для связи соединения.string|Cake\ORM\Table -
$_validStrategiesprotectedДопустимые стратегии для этого типа ассоциации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() _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
Возвращает
booleanfalse
Выбрасывает
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
$optionsoptional [] - Дополнительные параметры или переопределения, которые следует учесть
Исключение
RuntimeExceptionесли переданный билдер запросов не возвращает объект запроса
Переопределяет
Cake\ORM\Association::attachTo() cascadeDelete()source public
cascadeDelete( Cake\Datasource\EntityInterface $entity , array $options [] )
Очистить данные в таблице соединения для данной сущности.
Параметры
-
Cake\Datasource\EntityInterface$entity - Сущность, которая инициировала каскадное удаление.
- array
$optionsoptional [] - Параметры исходного удаления.
Возвращает
booleanУспех.
conditions()source public
conditions( array|null $conditions null )
Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации. Если параметры не переданы, возвращается текущий список.
Параметры
- array|null
$conditionsoptional null - список условий для использования
Возвращает
arrayПереопределяет
Cake\ORM\Association::conditions() find()source public
find( string|array|null $type null , array $options [] )
Делегирует операцию поиска методу find целевой таблицы и соответствующим образом изменяет запрос на основе конфигурации этой ассоциации.
Если ваша ассоциация включает условия, таблица соединения будет включена в ассоциации запроса.
Параметры
- string|array|null
$typeoptional null тип выполняемого запроса, если передан массив, он будет интерпретирован как параметр
$options- array
$optionsoptional [] - Параметры для поиска
Возвращает
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 - Потенциальная таблица с владением
Возвращает
booleanjunction()source public
junction( string|Cake\ORM\Table|null $table null )
Устанавливает экземпляр таблицы для отношения соединения. Если аргументы не переданы, возвращается текущий сконфигурированный экземпляр таблицы.
Параметры
- string|
Cake\ORM\Table|null$tableoptional null - Имя или экземпляр таблицы соединения
Возвращает
Cake\ORM\TablejunctionConditions()source protected
junctionConditions( )
Возвращает отфильтрованные условия, которые конкретно ссылаются на таблицу соединения.
Возвращает
arraylink()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
$optionsoptional [] - список параметров, передаваемых внутреннему вызову
save
Возвращает
booleantrue при успехе, 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
$optionsoptional [] список параметров, которые необходимо передать внутренним вызовам
save/deleteпри сохранении/обновлении новых связей или удалении существующих
Возвращает
booleanуспех
Исключение
InvalidArgumentExceptionесли переданы не сохранённые сущности или если какой-либо из них отсутствует первичный ключ
saveAssociated()source public
saveAssociated( Cake\Datasource\EntityInterface $entity , array $options [] )
Взятие сущности из исходной таблицы и поиск поля, соответствующего имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации, передав предоставленные $options
При использовании стратегии 'append' эта функция будет создавать только новые связи между каждой стороной этой ассоциации. Она не будет удалять существующие, даже если они отсутствуют в массиве сущностей, которые нужно сохранить.
При использовании стратегии 'replace' существующие связи будут удалены, и новые связи будут созданы в соединительной таблице. Если в базе данных существуют связи с некоторыми из сущностей, которые предполагается сохранить с помощью этого метода, они будут обновлены, а не удалены.
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность из исходной таблицы
- массив
$optionsнеобязательно [] опции, которые будут переданы методу сохранения в целевой таблице
Возвращает
boolean|Cake\Datasource\EntityInterfacefalse, если $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() 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
_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необязательно [] - ключ пользовательских параметров, которые могут изменить возвращаемое значение
Возвращаемое значение
booleancascadeCallbacks()source public
cascadeCallbacks( boolean|null $cascadeCallbacks null )
Устанавливает, должны ли срабатывать каскадные удаления с вызовом обратных вызовов. Если аргументы не переданы, возвращается текущее настроенное значение
Параметры
- boolean|null
$cascadeCallbacksнеобязательно null - значение переключателя каскадных обратных вызовов
Возвращаемое значение
booleanclassName()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 для чтения текущего состояния.
Возвращаемое значение
booleaneagerLoader()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)
Возвращает
stringname()source public
name( string|null $name null )
Устанавливает имя для этой ассоциации. Если аргументы не переданы, возвращается текущее настроенное имя.
Параметры
- string|null
$nameнеобязательно null - Присваиваемое имя
Возвращает
stringproperty()source public
property( string|null $name null )
Устанавливает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы. Если аргументы не переданы, возвращается текущий настроенный тип.
Параметры
- string|null
$nameнеобязательно null - Имя свойства ассоциации. Используйте null, чтобы прочитать текущее значение.
Возвращает
stringsource()source public
source( Cake\ORM\Table $table null )
Устанавливает экземпляр таблицы для исходной стороны ассоциации. Если аргументы не переданы, возвращается текущий настроенный экземпляр таблицы.
Параметры
-
Cake\ORM\Table$tableнеобязательно null - экземпляр, который будет назначен как сторона источника
Возвращает
Cake\ORM\Tablestrategy()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\TableupdateAll()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.
Возвращает
arraycanBeJoined()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 - ключ, который будет использоваться для связывания обеих таблиц вместе
Возвращает
stringsort()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Пространство имен плагина
_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'
$_saveStrategysource
protected string
Стратегия сохранения, используемая данной ассоциацией
self::SAVE_REPLACE
$_strategysource
protected string
Имя стратегии для получения связанных записей.
self::STRATEGY_SELECT
$_targetConditionssource
protected null|array
Отфильтрованные условия, относящиеся к целевой таблице.
$_targetForeignKeysource
protected string|array
Имя поля, представляющего внешний ключ к целевой таблице
$_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