Класс 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
Вспомогательная функция для создания нового объекта Query для возврата всех записей в целевой таблице, связанных с теми, что указаны в $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
Изменяет объект Query, чтобы включить связанные данные целевой таблицы в конечный результат
- cascadeDelete() publicОчистить данные в таблице сопряжения для заданной сущности.
- conditions() public
Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевого сопоставления. Если параметры не переданы, возвращается текущий список.
- find() public
Делегирует операцию поиска методу find целевой таблицы и соответственно модифицирует запрос на основе конфигурации этого сопоставления.
- isOwningSide() public
Возвращает boolean true, так как обе таблицы «владеют» строками на другой стороне ассоциации через таблицу сопряжения.
- junction() public
Устанавливает экземпляр таблицы для связи сопряжения. Если аргументы не переданы, возвращается текущий настроенный экземпляр таблицы.
- junctionConditions() protected
Возвращает отфильтрованные условия, которые конкретно ссылаются на таблицу сопряжения.
- link() public
Связывает исходную сущность с каждой из целевых сущностей, создавая связи в таблице сопряжения. Предполагается, что и исходная сущность, и каждая из целевых сущностей уже сохранены. Если они помечены как новые или их статус неизвестен, будет выброшено исключение.
- replaceLinks() public
Заменяет существующие связи между исходной сущностью и целевой на переданные. Этот метод выполняет интеллектуальную очистку: связи, которые уже сохранены и присутствуют в
$targetEntities, не будут удалены, новые связи будут созданы для переданных целевых сущностей, которых ещё нет в базе данных, а остальные будут удалены. - saveAssociated() public
Принимает сущность из исходной таблицы и проверяет, есть ли поле, соответствующее имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации путём передачи предоставленных
$options - saveStrategy() public
Устанавливает стратегию, которая должна использоваться для сохранения. Если вызвана без аргументов, она вернёт текущую настроенную стратегию
- targetConditions() protectedВозвращает отфильтрованные условия, которые ссылаются на целевую таблицу.
- targetForeignKey() 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\Datasource\QueryInterface $query , array $options )
Условно добавляет условие к переданному запросу, которое будет искать записи, где нет совпадений с этим сопоставлением.
Параметры
-
Cake\Datasource\QueryInterface$query - Запрос для изменения
- array
$options - Массив опций, содержащий ключ
negateMatch.
Переопределяет
Cake\ORM\Association::_appendNotMatching() _buildQuery()source protected
_buildQuery( array $options )
Вспомогательная функция для создания нового объекта Query для возврата всех записей в целевой таблице, связанных с теми, что указаны в $options из исходной таблицы.
Используется для ленивой загрузки записей в целевой таблице на основе условий.
Параметры
- array
$options - опции, принятые eagerLoader()
Возвращает
Cake\ORM\QueryВыбрасывает
InvalidArgumentExceptionКогда ключ требуется для ассоциаций, но не выбран.
_buildResultMap()source protected
_buildResultMap( Cake\ORM\Query $fetchQuery , array $options )
Создаёт массив, содержащий результаты из fetchQuery, индексированные по значению foreignKey, соответствующему этому ассоциации.
Параметры
-
Cake\ORM\Query$fetchQuery - Запрос для получения результатов
- массив
$options - Параметры, переданные в загрузчик eager
Возвращает
массивВызывает исключение
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 )
Генерирует ассоциации в таблице соединения по мере необходимости.
Генерирует следующие ассоциации:
- junction belongsTo source e.g. ArticlesTags belongsTo Tags
- junction belongsTo target e.g. ArticlesTags belongsTo 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 )
Генерирует дополнительные ассоциации исходной таблицы по мере необходимости.
Генерирует следующие ассоциации:
- source hasMany junction e.g. Tags hasMany 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 )
Генерирует взаимные ассоциации по мере необходимости.
Генерирует следующие ассоциации:
- target hasMany junction e.g. Articles hasMany ArticlesTags
- target belongsToMany source e.g Articles belongsToMany 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 родительская сущность, содержащая целевые сущности для сохранения.
- массив|Перечисляемый
$entities список сущностей для сохранения в целевой таблице и для связывания с родительской сущностью
- массив
$options - список параметров, принятых
Table::save()
Возвращает
Cake\Datasource\EntityInterface|booleanродительская сущность после создания всех ссылок, если ошибок не было, иначе false
Вызывает исключение
InvalidArgumentExceptionесли свойство, представляющее ассоциацию в родительской сущности, нельзя пройти по иерархии
attachTo()source public
attachTo( Cake\ORM\Query $query , array $options [] )
Изменяет объект запроса, чтобы включить данные связанной целевой таблицы в окончательный результат.
Массив параметров принимает следующие ключи:
- includeFields: Включать ли поля целевой модели в результат
- foreignKey: Название поля для использования в качестве внешнего ключа, если false, не используется
- conditions: Массив с условиями фильтрации для объединения
- fields: Список полей в целевой таблице для включения в результат
- type: Тип объединения (например, INNER)
Параметры
-
Cake\ORM\Query$query - объект запроса, который нужно изменить, чтобы включить данные целевой таблицы
- массив
$optionsнеобязательный [] - Дополнительные параметры или переопределения
Исключения
RuntimeExceptionесли создатель запроса не возвращает объект запроса
Переопределяет
Cake\ORM\Association::attachTo() cascadeDelete()source public
cascadeDelete( Cake\Datasource\EntityInterface $entity , array $options [] )
Очищает данные в таблице соединения для данного объекта.
Параметры
-
Cake\Datasource\EntityInterface$entity - объект, который инициировал каскадное удаление.
- массив
$optionsнеобязательный [] - Параметры для исходного удаления.
Возвращает
booleanУспех.
conditions()source public
conditions( array|null $conditions null )
Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевого объединения. Если параметры не переданы, возвращается текущий список.
Параметры
- массив|null
$conditionsнеобязательный null - список условий
Возвращает
массивПереопределяет
Cake\ORM\Association::conditions() find()source public
find( string|array|null $type null , array $options [] )
Делегирует операцию поиска методу поиска целевой таблицы и соответствующим образом изменяет запрос на основе этой конфигурации объединения.
Если ваше объединение включает условия, таблица соединения будет включена в содержащие объединения запроса.
Параметры
- строка|массив|null
$typeнеобязательный null тип запроса, если передается массив, он интерпретируется как параметр
$options- массив
$optionsнеобязательный [] - Параметры для поиска
Возвращает
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 )
Устанавливает экземпляр таблицы для отношения соединения. Если аргументы не переданы, возвращается текущий настроенный экземпляр таблицы
Параметры
- строка|
Cake\ORM\Table|null$tableнеобязательный null - Имя или экземпляр таблицы соединения
Возвращает
Cake\ORM\TablejunctionConditions()source protected
junctionConditions( )
Возвращает отфильтрованные условия, которые относятся конкретно к таблице соединения.
Возвращает
массив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этого объединения- массив
$targetEntities список объектов, относящихся к стороне
targetэтого объединения- массив
$optionsнеобязательный [] - список параметров, передаваемых в внутренний вызов
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 сохраненный объект в таблице источника для этого объединения
- массив
$targetEntities - список объектов из целевой таблицы для связывания
- массив
$optionsнеобязательный [] список параметров, передаваемых во внутренние вызовы
save/deleteпри сохранении/обновлении новых ссылок или удалении существующих
Возвращает
booleanуспех
Исключения
InvalidArgumentExceptionесли передаются не сохраненные объекты или какой-либо из них не имеет значения первичного ключа
saveAssociated()source public
saveAssociated( Cake\Datasource\EntityInterface $entity , array $options [] )
Берет объект из таблицы источника и проверяет, есть ли поле, соответствующее имени свойства для этого объединения. Найденный объект будет сохранен в целевой таблице для этого объединения, передав предоставленные $options
При использовании стратегии «добавления» эта функция будет создавать новые связи между каждой стороной этого объединения. Она не будет удалять существующие, даже если они не присутствуют в массиве объектов для сохранения.
При использовании стратегии «замены» существующие ссылки будут удалены, а новые ссылки будут созданы в таблице соединения. Если в базе данных существуют ссылки на некоторые из объектов, которые предполагается сохранить с помощью этого метода, они будут обновлены, а не удалены.
Параметры
-
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 )
Устанавливает стратегию, которая должна использоваться для сохранения. Если вызов осуществляется без аргументов, возвращается текущая настроенная стратегия.
Параметры
- string|null
$strategyнеобязательный null - имя стратегии для использования
Возвращает
stringстратегия, используемая для сохранения
Исключения
InvalidArgumentExceptionесли передано недопустимое имя стратегии
targetConditions()source protected
targetConditions( )
Возвращает отфильтрованные условия, ссылающиеся на целевую таблицу.
Любые строковые выражения или объекты выражений также будут возвращены в этом списке.
Возвращает
mixedОбычно массив. Если условия не являются массивом, условия ассоциации возвращаются без изменений.
targetForeignKey()source public
targetForeignKey( string|null $key null )
Устанавливает имя поля, представляющего внешний ключ к целевой таблице. Если параметры не переданы, возвращается текущее поле.
Параметры
- string|null
$keyнеобязательный null - ключ, используемый для связывания обеих таблиц
Возвращает
stringunlink()source public
unlink( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities , array|boolean $options [] )
Удаляет все связи между переданной сущностью источника и каждой из предоставленных целевых сущностей. Этот метод предполагает, что все переданные объекты уже сохранены в базе данных и что каждый из них содержит значение первичного ключа.
Параметры
В дополнение к стандартным параметрам, принимаемым Table::delete(), поддерживаются следующие ключи:
- cleanProperty: Удалять ли все объекты в
$targetEntities, которые хранятся в %%%CODE_BLOCK_205%% (по умолчанию: 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
Возвращает
booleanУспех
Исключения
InvalidArgumentExceptionесли переданы не сохраненные сущности или у любой из них отсутствует значение первичного ключа
Методы, унаследованные от Cake\ORM\Association
__call()source public
__call( string $method , array $argument )
Делегирует вызовы методов к целевой таблице.
Параметры
- строка
$method - имя вызываемого метода
- массив
$argument - список аргументов, передаваемых в функцию
Возвращает
mixedИсключения
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 - имя свойства
Возвращает
booleantrue, если свойство существует
_appendFields()source protected
_appendFields( Cake\ORM\Query $query , Cake\ORM\Query $surrogate , array $options )
Вспомогательная функция, используемая для условного добавления полей к фрагменту SELECT запроса из полей, найденных в другом объекте запроса.
Параметры
-
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 )
Устанавливает имя поля, представляющего поле привязки к целевой таблице. Если не указано вручную, используется первичный ключ таблицы, владеющей стороной.
Если параметры не переданы, возвращается текущее поле.
Параметры
- string|null
$keyнеобязательно null - поле таблицы, используемое для связи обеих таблиц
Возвращает
string|arraycanBeJoined()source public
canBeJoined( array $options [] )
Определяет, может ли данная ассоциация быть выражена напрямую в соединении запроса.
Параметры
- array
$optionsнеобязательно [] - настраиваемый ключ параметров, который может изменить возвращаемое значение
Возвращает
booleancascadeCallbacks()source public
cascadeCallbacks( boolean|null $cascadeCallbacks null )
Устанавливает, следует ли также запускать обратные вызовы при каскадных удалениях. Если аргументы не переданы, возвращается текущее настроенное значение.
Параметры
- boolean|null
$cascadeCallbacksнеобязательно null - значение переключателя каскадных обратных вызовов
Возвращает
booleandefaultRowValue()source public
defaultRowValue( array $row , boolean $joined )
Возвращает изменённую строку после добавления свойства для данной ассоциации со значением по умолчанию в зависимости от того, была ли ассоциация присоединена или получена извне.
Параметры
- array
$row - Строка, для которой нужно установить значение по умолчанию.
- boolean
$joined Указывает, является ли строка результатом прямого соединения с данной ассоциацией
Возвращает
arraydeleteAll()source public
deleteAll( mixed $conditions )
Делегирует операцию удаления методу deleteAll целевой таблицы.
Параметры
- mixed
$conditions Условие, которое будет использоваться. Принимает всё, что может принять Query::where().
Возвращает
integerВозвращает количество затронутых строк.
См. также
\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: Объект запроса, настроенный для поиска записей исходной таблицы
- keys: Список значений первичного ключа из исходной таблицы
- foreignKey: Имя поля, используемого для связи обеих таблиц
- conditions: Список условий, которые должны быть переданы методу query where()
- sort: Направление, в котором должны быть возвращены записи
- fields: Список полей для выбора из целевой таблицы
- contain: Список связанных таблиц, которые необходимо загрузить в связке с целевой таблицей
- strategy: Имя стратегии, используемой для поиска записей целевой таблицы
- nestKey: Ключ массива, под которым будут найдены результаты при преобразовании строки
Параметры
- array
$options - Параметры для загрузки с помощью Eager Loading.
Возвращает
Closureexists()source public
exists( array|callable|Cake\Database\ExpressionInterface $conditions )
Делегирует операцию методу exists целевой таблицы после добавления стандартных условий для данной ассоциации.
Параметры
- array|callable|
Cake\Database\ExpressionInterface$conditions Условия, используемые для проверки, соответствует ли какая-либо запись.
Возвращает
booleanСм. также
\Cake\ORM\Table::exists()finder()source public
finder( string|null $finder null )
Устанавливает используемый по умолчанию поиск для извлечения строк из целевой таблицы. Если параметры не переданы, возвращается текущее имя настроенного поиска.
Параметры
- string|null
$finderнеобязательно null - имя поиска, которое нужно использовать
Возвращает
stringforeignKey()source public
foreignKey( string|null $key null )
Устанавливает имя поля, представляющего внешний ключ к целевой таблице. Если параметры не переданы, возвращается текущее поле.
Параметры
- string|null
$keyнеобязательно null - ключ, который будет использоваться для связи обеих таблиц
Возвращает
string|arrayjoinType()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\TabletransformRow()source public
transformRow( array $row , string $nestKey , boolean $joined , string $targetProperty null )
Правильно вкладывает значения результата строки, связанные с ассоциацией, в правильные ключи массива внутри исходных результатов.
Параметры
- array
$row - Строка для преобразования
- string
$nestKey Ключ массива, под которым должны быть найдены результаты этой ассоциации
- boolean
$joined Является ли строка результатом прямого соединения с данной ассоциацией
- string
$targetPropertyнеобязательно null Имя свойства в исходных результатах, где данные ассоциации должны быть вложены. Будет использовано значение по умолчанию, если не указано.
Возвращает
arrayupdateAll()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 с использованием camelCase
Параметры
- string
$name - имя
Возвращает
stringНазвание в camelCase
_entityName()source protected
_entityName( string $name )
Создаёт правильное имя сущности (единственное число) для указанного имени
Параметры
- string
$name - Имя
Возвращает
stringНазвание модели в camelCase и единственном числе
_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 для нужного плагина.
Параметры
- string
$pluginName - Имя плагина (например, DebugKit)
Возвращает
stringПуть к плагину.
_pluralHumanName()source protected
_pluralHumanName( string $name )
Создаёт множественное человекопонятное имя, используемое в представлениях
Параметры
- string
$name - Имя контроллера
Возвращает
stringМножественное человекопонятное имя
_singularHumanName()source protected
_singularHumanName( string $name )
Создаёт единственное человекопонятное имя, используемое в представлениях
Параметры
- string
$name - Имя контроллера
Возвращает
stringЕдинственное человекопонятное имя
_singularName()source protected
_singularName( string $name )
Создаёт единственное имя для использования в представлениях.
Параметры
- string
$name - Имя для использования
Возвращает
stringИмя переменной
_variableName()source protected
_variableName( string $name )
Создает имя множественного числа для переменных представлений
Параметры
- string
$name - Имя для использования
Возвращает
stringИмя множественного числа для представлений
Методы, используемые из 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–2017 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.3/class-Cake.ORM.Association.BelongsToMany.html