Класс BelongsToMany
Представляет отношение М - N, где существует соединительная таблица, содержащая поля связи между исходной и целевой таблицами.
Пример отношения BelongsToMany: Статья принадлежит многим тегам.
- Cake\ORM\Association использует Cake\Core\ConventionsTrait, Cake\ORM\Locator\LocatorAwareTrait
-
Cake\ORM\Association\BelongsToMany использует Cake\ORM\Association\ExternalAssociationTrait
Подробное описание метода
_appendJunctionJoinисходный код защищённый
_appendJunctionJoin( Cake\ORM\Query $query , string|array $conditions )
Добавление соединения к соединительной таблице.
Параметры
-
Cake\ORM\Query$query - Запрос для добавления.
- string|array
$conditions - Условие запроса для использования.
Возвращает
Cake\ORM\QueryИзменённый запрос.
_appendNotMatchingисходный код защищённый
_appendNotMatching( Cake\Database\Query $query , array $options )
Условно добавляет условие в переданный запрос, которое будет находить записи, где нет совпадения с этим отношением.
Параметры
-
Cake\Database\Query$query - Запрос для изменения
- array
$options - Массив опций, содержащий ключ
negateMatch.
Переопределяет
Cake\ORM\Association::_appendNotMatching() _buildQueryисходный код защищённый
_buildQuery( array $options )
Вспомогательная функция для построения нового объекта запроса для возврата всех записей в целевой таблице, связанных с указанными в $options записями из исходной таблицы.
Используется для ленивой загрузки записей в целевой таблице на основе условий.
Параметры
- array
$options - опции, принимаемые eagerLoader()
Возвращает
Cake\ORM\Query\Cake\ORM\Query
Выбрасывает
InvalidArgumentExceptionПри необходимости ключа для отношений, но он не выбран.
_buildResultMapисходный код защищённый
_buildResultMap( Cake\ORM\Query $fetchQuery , array $options )
Строит массив, содержащий результаты из fetchQuery, индексированные по значению foreignKey, соответствующему этому отношению.
Параметры
-
Cake\ORM\Query$fetchQuery - Запрос для получения результатов
- array
$options - Опции, переданные в eager loader
Возвращает
arrayмассив
Выбрасывает
RuntimeExceptionесли свойство ассоциации не является частью набора результатов.
_checkPersistenceStatusисходный код защищённый
_checkPersistenceStatus( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities )
Выбрасывает исключение, если какая-либо из переданных сущностей не сохранена.
Параметры
-
Cake\Datasource\EntityInterface$sourceEntity - строка, относящаяся к стороне
sourceэтой ассоциации - array
$targetEntities - список сущностей, относящихся к стороне
targetэтой ассоциации
Возвращает
booleanbool
Выбрасывает
InvalidArgumentException\InvalidArgumentException
_collectJointEntitiesисходный код защищённый
_collectJointEntities( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities )
Возвращает список сопутствующих сущностей, которые существуют между исходной сущностью и каждой из переданных целевых сущностей.
Параметры
-
Cake\Datasource\EntityInterface$sourceEntity - Строка, относящаяся к исходной стороне этого отношения.
- array
$targetEntities - Строки, относящиеся к целевой стороне этого отношения.
Возвращает
arrayмассив
Выбрасывает
InvalidArgumentExceptionесли у какой-либо из сущностей отсутствует значение первичного ключа
_diffLinksисходный код защищённый
_diffLinks( Cake\ORM\Query $existing , array $jointEntities , array $targetEntities , array $options [] )
Вспомогательный метод, используемый для удаления разницы между ссылками, переданными в $existing и $jointEntities. Этот метод вернёт значения из $targetEntities, которые не были удалены при вычислении разницы.
Параметры
-
Cake\ORM\Query$existing - запрос для получения существующих ссылок
- array
$jointEntities - сущности ссылок, которые должны быть сохранены
- array
$targetEntities - сущности в целевой таблице, связанные с
$jointEntities - array
$optionsопционально [] - список опций, принимаемых
Table::delete()
Возвращает
arrayмассив
_generateJunctionAssociationsисходный код защищённый
_generateJunctionAssociations( Cake\ORM\Table $junction , Cake\ORM\Table $source , Cake\ORM\Table $target )
Генерирует ассоциации в таблице соединения, при необходимости
Генерирует следующие ассоциации:
- соединение belongsTo исходная таблица, например, ArticlesTags belongsTo Tags
- соединение belongsTo целевая таблица, например, ArticlesTags belongsTo Articles
Вы можете переопределить эти сгенерированные ассоциации, определив ассоциации с правильными псевдонимами.
Параметры
-
Cake\ORM\Table$junction - Таблица соединения.
-
Cake\ORM\Table$source - Исходная таблица.
-
Cake\ORM\Table$target - Целевая таблица.
_generateSourceAssociationsисходный код защищённый
_generateSourceAssociations( Cake\ORM\Table $junction , Cake\ORM\Table $source )
Генерирует дополнительные ассоциации исходной таблицы при необходимости.
Генерирует следующие ассоциации:
- исходная таблица hasMany таблица соединения, например, Tags hasMany ArticlesTags
Вы можете переопределить эти сгенерированные ассоциации, определив ассоциации с правильными псевдонимами.
Параметры
-
Cake\ORM\Table$junction - Таблица соединения.
-
Cake\ORM\Table$source - Исходная таблица.
_generateTargetAssociationsисходный код защищённый
_generateTargetAssociations( Cake\ORM\Table $junction , Cake\ORM\Table $source , Cake\ORM\Table $target )
Генерирует взаимные ассоциации при необходимости.
Генерирует следующие ассоциации:
- целевая таблица hasMany таблица соединения, например, Articles hasMany ArticlesTags
- целевая таблица belongsToMany исходная таблица, например, Articles belongsToMany Tags.
Вы можете переопределить эти сгенерированные ассоциации, определив ассоциации с правильными псевдонимами.
Параметры
-
Cake\ORM\Table$junction - Таблица соединения.
-
Cake\ORM\Table$source - Исходная таблица.
-
Cake\ORM\Table$target - Целевая таблица.
_joinConditionисходный код защищённый
_joinCondition( array $options )
Возвращает false, так как условия соединения определены в таблице соединения.
Параметры
- array
$options - список опций, переданных в метод attachTo
Возвращает
booleanfalse
Выбрасывает
RuntimeExceptionесли количество столбцов в foreignKey не совпадает с количеством столбцов в первичном ключе исходной таблицы
Переопределяет
Cake\ORM\Association::_joinCondition() _junctionAssociationNameисходный код защищённый
_junctionAssociationName( )
Возвращает имя ассоциации от целевой таблицы к таблице соединения. Это имя используется для генерации псевдонима в запросе и для последующего извлечения результатов.
Возвращает
stringстрока
_junctionTableNamesource protected
_junctionTableName( string|null $name null )
Устанавливает имя таблицы соединения. Если аргументы не переданы, возвращается текущее имя. Если не найдено, генерируется имя по умолчанию на основе связанных таблиц.
Параметры
- string|null
$nameнеобязательно null - Имя таблицы соединения.
Возвращает
stringстрока
_linkFieldsource protected
_linkField( array $options )
Генерирует строку, используемую в качестве поля таблицы, содержащего значения, по которым следует применять фильтр.
Параметры
- array
$options - опции для получения поля связи.
Возвращает
stringстрока
_optionssource protected
_options( array $opts )
Парсит дополнительные параметры, переданные в конструктор.
Параметры
- array
$opts - исходный список параметров, переданных в конструктор
Переопределяет
Cake\ORM\Association::_options() _saveLinkssource protected
_saveLinks( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities , array $options )
Создаёт связи между сущностью источника и каждой из переданных целевых сущностей.
Параметры
-
Cake\Datasource\EntityInterface$sourceEntity - сущность из таблицы источника в этой связи
- array
$targetEntities - список сущностей, которые нужно связать с сущностью источника, используя таблицу соединения
- array
$options - список опций, принимаемых
Table::save()
Возвращает
booleanуспех
_saveTargetsource 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если свойство, представляющее связь в родительской сущности, нельзя пройти
attachTosource public
attachTo( Cake\ORM\Query $query , array $options [] )
Изменяет объект запроса, чтобы включить связанные данные целевой таблицы в окончательный результат.
Массив опций может содержать следующие ключи:
- includeFields: Включать ли поля целевой модели в результат
- foreignKey: Имя поля, используемого в качестве внешнего ключа, если false, не будет использоваться
- conditions: Массив с условиями для фильтрации объединения
- fields: Список полей в целевой таблице для включения в результат
- type: Тип объединения (например, INNER)
Параметры
-
Cake\ORM\Query$query - запрос, который нужно изменить, чтобы включить данные целевой таблицы
- array
$optionsнеобязательно [] - Дополнительные опции или переопределения
Выбрасывает
RuntimeExceptionесли переданный билдер запросов не возвращает объект запроса
Переопределяет
Cake\ORM\Association::attachTo() cascadeDeletesource public
cascadeDelete( Cake\Datasource\EntityInterface $entity , array $options [] )
Очищает данные в таблице соединения для данной сущности.
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность, которая инициировала каскадное удаление.
- array
$optionsнеобязательно [] - Опции для исходного удаления.
Возвращает
booleanУспех.
conditionssource public
conditions( array|null $conditions null )
Устанавливает список условий, которые всегда должны включаться при получении записей из целевой связи. Если параметры не переданы, возвращается текущий список.
Параметры
- array|null
$conditionsнеобязательно null - список условий
Возвращает
arrayмассив
Переопределяет
Cake\ORM\Association::conditions() findsource public
find( string|array $type null , array $options [] )
Делегирует операцию поиска методу поиска целевой таблицы и соответствующим образом изменяет запрос на основе настроек этой связи.
Если ваша связь включает условия, таблица соединения будет включена в содержащие ассоциации запроса.
Параметры
- string|array
$typeнеобязательно null - тип запроса, если передан массив, он будет интерпретирован как параметр
$options - array
$optionsнеобязательно [] - Опции для поиска
Возвращает
Cake\ORM\Query\Cake\ORM\Query
См.
Cake\ORM\Table::find()Переопределяет
Cake\ORM\Association::find() isOwningSidesource public
isOwningSide( Cake\ORM\Table $side )
Возвращает boolean true, так как обе таблицы «владеют» строками на другой стороне связи через таблицу соединения.
Параметры
-
Cake\ORM\Table$side - Возможная таблица с владением
Возвращает
booleanbool
junctionsource public
junction( string|Cake\ORM\Table|null $table null )
Устанавливает экземпляр таблицы для связи соединения. Если аргументы не переданы, возвращается текущий настроенный экземпляр таблицы.
Параметры
- string|
Cake\ORM\Table|null$tableнеобязательно null - Имя или экземпляр таблицы соединения
Возвращает
Cake\ORM\Table\Cake\ORM\Table
junctionConditionssource protected
junctionConditions( )
Возвращает отфильтрованные условия, которые непосредственно ссылаются на таблицу соединения.
Возвращает
arrayмассив
linksource public
link( Cake\Datasource\EntityInterface $sourceEntity , array $targetEntities , array $options [] )
Связывает сущность источника с каждой из предоставленных целевых сущностей, создавая связи в таблице соединения. Предполагается, что и сущность источника, и каждая из целевых сущностей уже сохранены. Если они помечены как новые или их статус неизвестен, будет выброшено исключение.
При использовании этого метода все сущности в $targetEntities будут добавлены в свойство сущности источника, соответствующее этому объекту ассоциации.
Этот метод не проверяет уникальность связей.
Пример:
$newTags = $tags->find('relevant')->execute(); $articles->association('tags')->link($article, $newTags);
$article->get('tags') будет содержать все теги в $newTags после связывания
Параметры
-
Cake\Datasource\EntityInterface$sourceEntity - строка, принадлежащая стороне
sourceэтой связи - array
$targetEntities - список сущностей, принадлежащих стороне
targetэтой связи - array
$optionsнеобязательно [] - список опций, которые будут переданы внутреннему вызову
save
Возвращает
booleantrue при успехе, false в противном случае
Выбрасывает
InvalidArgumentExceptionесли любое из значений в $targetEntities не выявлено как уже сохранённое
replaceLinkssource 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если переданы несохранённые сущности или любая из них не имеет значения первичного ключа
saveAssociatedsource public
saveAssociated( Cake\Datasource\EntityInterface $entity , array $options [] )
Принимает сущность из таблицы источника и проверяет, есть ли поле, соответствующее имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации, передав предоставленные $options
При использовании стратегии 'append' эта функция будет создавать только новые связи между каждой стороной этой ассоциации. Она не будет удалять существующие, даже если они отсутствуют в массиве сущностей, которые должны быть сохранены.
При использовании стратегии 'replace' существующие связи будут удалены, и новые связи будут созданы в таблице соединения. Если в базе данных существуют связи с некоторыми из сущностей, которые предполагается сохранить с помощью этого метода, они будут обновлены, а не удалены.
Параметры
-
Cake\Datasource\EntityInterface$entity - сущность из таблицы источника
- массив
$optionsнеобязательно [] - параметры, которые необходимо передать методу сохранения в целевой таблице
Возвращает
boolean|Cake\Datasource\EntityInterfacefalse, если $entity не удалось сохранить, в противном случае возвращает сохранённую сущность
Выбрасывает
InvalidArgumentExceptionесли свойство, представляющее ассоциацию в родительской сущности, невозможно пройти
См.
Table::save()Cake\ORM\Association\BelongsToMany::replaceLinks()saveStrategysource public
saveStrategy( string|null $strategy null )
Устанавливает стратегию, которая должна быть использована для сохранения. Если вызвана без аргументов, она вернёт текущую настроенную стратегию.
Параметры
- строка|null
$strategyнеобязательно null - название стратегии, которая должна быть использована
Возвращает
stringстратегия, которая должна быть использована для сохранения
Выбрасывает
InvalidArgumentExceptionесли передано недопустимое имя стратегии
targetConditionssource protected
targetConditions( )
Возвращает отфильтрованные условия, ссылающиеся на целевую таблицу.
Любые строковые выражения или объекты выражений также будут возвращены в этом списке.
Возвращает
mixedВ основном массив. Если условия не являются массивом, условия ассоциации будут возвращены без изменений.
targetForeignKeysource public
targetForeignKey( string|null $key null )
Устанавливает имя поля, представляющего внешний ключ к целевой таблице. Если параметры не переданы, возвращается текущее поле.
Параметры
- строка|null
$keyнеобязательно null - ключ, используемый для связывания обеих таблиц
Возвращает
stringстрока
transformRowsource public
transformRow( array $row , string $nestKey , boolean $joined )
Правильно вложенные значения связанной строки в правильные ключи массива внутри результатов источника.
Параметры
- массив
$row - строка для преобразования
- строка
$nestKey - ключ массива, под которым должны быть найдены результаты для этой ассоциации
- булево
$joined - является ли строка результатом прямого объединения с этой ассоциацией
Возвращает
arrayмассив
Переопределяет
Cake\ORM\Association::transformRow() unlinksource 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
__callsource public
__call( string $method , array $argument )
Перенаправляет вызовы методов на целевую таблицу.
Параметры
- строка
$method - имя вызываемого метода
- массив
$argument - список аргументов, переданных в функцию
Возвращает
mixedсмешанное значение
Выбрасывает
BadMethodCallException\BadMethodCallException
__constructsource public
__construct( string $alias , array $options [] )
Конструктор. Подклассы могут переопределить функцию _options, чтобы получить исходный список переданных параметров, если ожидают любой другой специальный ключ.
Параметры
- строка
$alias - Имя ассоциации
- массив
$optionsнеобязательно [] - Список свойств, которые нужно установить для этого объекта
__getsource public
__get( string $property )
Делегирует получение свойства целевой таблице. Это удобно для получения ассоциаций этой ассоциации.
Параметры
- строка
$property - имя свойства
Возвращает
Cake\ORM\AssociationCake\ORM\Association
Возбуждает
RuntimeExceptionесли ассоциации с таким именем не существует
__issetsource public
__isset( string $property )
Делегирует вызов isset целевой таблице. Это удобно для проверки, имеет ли целевая таблица другую ассоциацию с указанным именем.
Параметры
- строка
$property - имя свойства
Возвращает
booleantrue, если свойство существует
_appendFieldssource protected
_appendFields( Cake\ORM\Query $query , Cake\ORM\Query $surrogate , array $options )
Вспомогательная функция, используемая для условного добавления полей к запросу select из полей, найденных в другом объекте запроса.
Параметры
-
Cake\ORM\Query$query - запрос, которому будут добавлены поля
-
Cake\ORM\Query$surrogate - запрос, содержащий поля, которые нужно скопировать
- массив
$options - параметры, переданные методу
attachTo
_bindNewAssociationssource 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
_dispatchBeforeFindsource protected
_dispatchBeforeFind( Cake\ORM\Query $query )
Вызывает beforeFind для целевой таблицы для запроса, к которому присоединяется эта ассоциация.
Параметры
-
Cake\ORM\Query$query - запрос, к которому присоединяется эта ассоциация
_extractFindersource 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 - Имя нахождения или массив, имеющий имя в качестве ключа и параметры в качестве значения.
Возвращает
arrayмассив
_formatAssociationResultssource 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
bindingKeysource public
bindingKey( string|null $key null )
Устанавливает имя поля, представляющего поле привязки к целевой таблице. Если не указано вручную, используется первичный ключ таблицы со стороны владельца.
Если параметры не переданы, возвращается текущее поле.
Параметры
- строка|null
$keyнеобязательно null - поле таблицы, которое будет использоваться для связывания обеих таблиц
Возвращает
string|arrayстрока|массив
canBeJoinedsource public
canBeJoined( array $options [] )
Можно ли выразить эту ассоциацию напрямую в соединении запроса.
Параметры
- массив
$optionsнеобязательно [] - ключ пользовательских параметров, который может изменить возвращаемое значение
Возвращает
booleanbool
cascadeCallbackssource public
cascadeCallbacks( boolean|null $cascadeCallbacks null )
Устанавливает, будут ли вызываться обратные вызовы при каскадных удалениях. Если аргументы не переданы, возвращается текущее значение конфигурации
Параметры
- булево|null
$cascadeCallbacksнеобязательно null - значение переключателя каскадных обратных вызовов
Возвращает
booleanbool
defaultRowValuesource public
defaultRowValue( array $row , boolean $joined )
Возвращает измененную строку после добавления свойства для этой ассоциации со значением по умолчанию в зависимости от того, была ли ассоциация присоединена или получена внешне.
Параметры
- массив
$row - строка, для которой нужно установить значение по умолчанию.
- булево
$joined - Является ли строка результатом прямого присоединения к этой ассоциации
Возвращает
arrayмассив
deleteAllsource public
deleteAll( mixed $conditions )
Делегирует операцию удаления методу deleteAll целевой таблицы.
Параметры
- смешанное
$conditions - Условия, которые будут использоваться, принимает все, что Query::where() может принять.
Возвращает
booleanУспех. Возвращает true, если одно или несколько строк затронуты.
См.
Cake\ORM\Table::deleteAll()dependentsource public
dependent( boolean|null $dependent null )
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
Это в основном используется для указания того, что записи должны быть удалены, если запись-владелец в исходной таблице удалена.
Если параметры не переданы, возвращается текущая настройка.
Параметры
- булево|null
$dependentнеобязательно null - Установите режим зависимости. Используйте null для чтения текущего состояния.
Возвращает
booleanbool
eagerLoadersource abstract public
eagerLoader( array $options )
Загружает список записей в целевой таблице, связанных с другим набором записей в исходной таблице. Источник записей может быть указан двумя способами: во-первых, путем передачи объекта Query, настроенного для поиска в исходной таблице, и, во-вторых, путем явного указания массива значений первичного ключа из исходной таблицы.
Требуемый способ передачи связанных записей источника контролируется «стратегией». При использовании стратегии подзапроса потребуется запрос к исходной таблице. При использовании стратегии select будет использоваться список первичных ключей.
Возвращает замыкание, которое должно быть выполнено для каждой записи, возвращенной в определённом запросе. Эта вызываемая функция будет отвечать за встраивание полей, связанных с каждой конкретной переданной строкой.
Массив параметров принимает следующие ключи:
- query: Объект Query, настроенный для поиска записей исходной таблицы
- keys: Список значений первичного ключа из исходной таблицы
- foreignKey: Название поля, используемого для связи обеих таблиц
- conditions: Список условий, которые должны быть переданы методу where() запроса
- sort: Направление, в котором должны возвращаться записи
- fields: Список полей для выбора из целевой таблицы
- contain: Список связанных таблиц для загрузки по ассоциации с целевой таблицей
- strategy: Название стратегии, которую нужно использовать для поиска записей целевой таблицы
- nestKey: Ключ массива, под которым будут найдены результаты при преобразовании строки
Параметры
- массив
$options - Параметры для загрузки по ассоциации.
Возвращает
Closure\Closure
findersource public
finder( string|null $finder null )
Устанавливает используемый по умолчанию поиск для извлечения строк из целевой таблицы. Если параметры не переданы, он вернёт текущее имя настроенного поиска.
Параметры
- строка|null
$finderнеобязательно null - имя поиска для использования
Возвращает
stringстрока
foreignKeysource public
foreignKey( string|null $key null )
Устанавливает имя поля, представляющего внешний ключ к целевой таблице. Если параметры не переданы, возвращается текущее поле.
Параметры
- строка|null
$keyнеобязательно null - ключ, используемый для связи обеих таблиц
Возвращает
string|arrayстрока|массив
joinTypesource public
joinType( string $type null )
Устанавливает тип соединения, который будет использоваться при добавлении ассоциации в запрос. Если аргументы не переданы, возвращается текущий настроенный тип.
Параметры
- строка
$typeнеобязательно null - тип соединения (например, INNER)
Возвращает
stringстрока
namesource public
name( string|null $name null )
Устанавливает имя этой ассоциации. Если аргумент не передан, будет возвращено текущее настроенное имя.
Параметры
- строка|null
$nameнеобязательно null - Назначаемое имя
Возвращает
stringстрока
propertysource public
property( string|null $name null )
Устанавливает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы. Если аргументы не переданы, возвращается текущий настроенный тип.
Параметры
- строка|null
$nameнеобязательно null - Имя свойства ассоциации. Используйте null для чтения текущего значения.
Возвращает
stringстрока
sourcesource public
source( Cake\ORM\Table $table null )
Устанавливает экземпляр таблицы для стороны источника ассоциации. Если аргументы не переданы, возвращается текущий настроенный экземпляр таблицы.
Параметры
-
Cake\ORM\Table$tableнеобязательно null - экземпляр, который нужно назначить стороной источника
Возвращает
Cake\ORM\Table\Cake\ORM\Table
strategysource public
strategy( string|null $name null )
Устанавливает имя стратегии, которая должна использоваться для получения связанных записей. Имейте в виду, что некоторые типы ассоциаций могут не реализовать, но имеют стратегию по умолчанию, что делает любые изменения в этой настройке недействительными. Если аргументы не переданы, возвращается текущая настроенная стратегия.
Параметры
- строка|null
$nameнеобязательно null - Тип стратегии. Используйте null для чтения текущего значения.
Возвращает
stringстрока
Исключения
InvalidArgumentExceptionПри предоставлении неверной стратегии.
targetsource public
target( Cake\ORM\Table $table null )
Устанавливает экземпляр таблицы для целевой стороны ассоциации. Если аргументы не переданы, возвращается текущий настроенный экземпляр таблицы.
Параметры
-
Cake\ORM\Table$tableнеобязательно null - экземпляр, который нужно назначить целевой стороной
Возвращает
Cake\ORM\Table\Cake\ORM\Table
updateAllsource public
updateAll( array $fields , mixed $conditions )
Делегирует операцию обновления методу updateAll целевой таблицы.
Параметры
- массив
$fields - Хэш поле => новое значение.
- смешанное
$conditions - Условия, используемые, допускает всё, что принимает Query::where().
Возвращает
booleanУспешно Возвращает true, если затронуто одна или более строк.
См. также
Cake\ORM\Table::updateAll()Методы, используемые из Cake\ORM\Association\ExternalAssociationTrait
_defaultOptionssource protected
_defaultOptions( )
Возвращает значения параметров по умолчанию для eagerLoader
Возвращает
arrayмассив
_externalOptionssource protected
_externalOptions( array $opts )
Парсит дополнительные параметры, переданные в конструкторе.
Параметры
- массив
$opts - исходный список параметров, переданных в конструктор
canBeJoinedsource public
canBeJoined( array $options [] )
Можно ли выразить эту ассоциацию непосредственно в соединении запроса
Параметры
- массив
$optionsнеобязательно [] - ключ пользовательских параметров, которые могут изменить возвращаемое значение
Возвращает
booleanесли ключ 'matching' в $option равен true, то эта функция вернёт true, иначе false
Переопределяет
Cake\ORM\Association::canBeJoined() defaultRowValuesource public
defaultRowValue( mixed $row , mixed $joined )
Переопределяет
Cake\ORM\Association::defaultRowValue() foreignKeysource public
foreignKey( string|null $key null )
Устанавливает имя поля, представляющего внешний ключ к исходной таблице. Если параметры не переданы, возвращается текущее поле
Параметры
- строка|null
$keyнеобязательно null - ключ, используемый для связи обеих таблиц
Возвращает
stringстрока
Переопределяет
Cake\ORM\Association::foreignKey() sortsource public
sort( mixed $sort null )
Устанавливает порядок сортировки, в котором должны возвращаться целевые записи. Если аргументы не переданы, возвращается текущее значение конфигурации.
Параметры
- mixed
$sortнеобязательно null - Оператор сортировки, совместимый с find()
Возвращает
mixedmixed
Методы, используемые из Cake\ORM\Association\SelectableAssociationTrait
_addFilteringConditionsource protected
_addFilteringCondition( Cake\ORM\Query $query , string|array $key , mixed $filter )
Добавляет любые условия, необходимые для загрузки соответствующего набора записей в запросе целевой таблицы, заданного ключом фильтра и некоторыми значениями фильтра.
Параметры
-
Cake\ORM\Query$query - Запрос целевой таблицы
- string|array
$key - Поля, которые должны использоваться для фильтрации
- mixed
$filter - Значение, которое должно использоваться для соответствия ключу $key
Возвращает
Cake\ORM\Query\Cake\ORM\Query
_addFilteringJoinsource public
_addFilteringJoin( Cake\ORM\Query $query , string $key , Cake\ORM\Query $subquery )
Добавляет любые условия, необходимые для загрузки соответствующего набора записей в запросе целевой таблицы, заданного ключом фильтра и некоторыми значениями фильтра, когда фильтрация должна выполняться с помощью подзапроса.
Параметры
-
Cake\ORM\Query$query - Запрос целевой таблицы
- string
$key - Поля, которые должны использоваться для фильтрации
-
Cake\ORM\Query$subquery - Подзапрос, который нужно использовать для фильтрации
Возвращает
Cake\ORM\Query\Cake\ORM\Query
_buildBaseQuerysource protected
_buildBaseQuery( array $options )
Вспомогательная функция для построения нового объекта Query для возврата всех записей в целевой таблице, связанных с теми, которые указаны в $options из исходной таблицы.
Параметры
- array
$options - Параметры, принимаемые eagerLoader()
Возвращает
Cake\ORM\Query\Cake\ORM\Query
Выбрасывает
InvalidArgumentExceptionПри необходимости ключа для ассоциаций, но он не выбран.
_buildSubquerysource protected
_buildSubquery( Cake\ORM\Query $query )
Строит запрос, который будет использоваться в качестве условия для фильтрации записей в целевой таблице; он создается путем клонирования исходного запроса, который использовался для загрузки записей в исходной таблице.
Параметры
-
Cake\ORM\Query$query - исходный запрос, используемый для загрузки исходных записей
Возвращает
Cake\ORM\Query\Cake\ORM\Query
_createTupleConditionsource protected
_createTupleCondition( Cake\ORM\Query $query , array $keys , mixed $filter , string $operator )
Возвращает объект TupleComparison, который можно использовать для сопоставления всех полей из $keys со значениями кортежей в $filter с использованием предоставленного оператора.
Параметры
-
Cake\ORM\Query$query - Запрос целевой таблицы
- array
$keys - Поля, которые должны использоваться для фильтрации
- mixed
$filter - Значение, которое должно использоваться для соответствия ключу $key
- string
$operator - Оператор для сравнения кортежей
Возвращает
Cake\Database\Expression\TupleComparison\Cake\Database\Expression\TupleComparison
_multiKeysInjectorsource protected
_multiKeysInjector( array $resultMap , array $sourceKeys , string $nestKey )
Возвращает вызываемый объект, который будет использоваться для каждой строки в наборе результатов запроса для вставки загруженных с жадностью строк, когда соответствие должно выполняться с использованием нескольких внешних ключей.
Параметры
- array
$resultMap - Массив со значениями, содержащий целевую таблицу
- array
$sourceKeys - Массив с алиасами ключей для сопоставления
- string
$nestKey - Ключ, под которым результаты должны быть вложены
Возвращает
Closure\Closure
_resultInjectorsource protected
_resultInjector( Cake\ORM\Query $fetchQuery , array $resultMap , array $options )
Возвращает вызываемый объект, который будет использоваться для каждой строки в наборе результатов запроса для вставки загруженных с жадностью строк.
Параметры
-
Cake\ORM\Query$fetchQuery - Запрос, используемый для извлечения результатов
- array
$resultMap - Массив, в котором внешний ключ является ключом, а соответствующие результаты целевой таблицы — значением.
- array
$options - Параметры, переданные методу eagerLoader
Возвращает
Closure\Closure
_subqueryFieldssource protected
_subqueryFields( Cake\ORM\Query $query )
Вычисляет поля, которые должны участвовать в подзапросе.
Обычно это включает столбцы ключей привязки. Если есть ORDER BY, эти столбцы также включаются, так как поля могут быть вычисленными или константными значениями, которые должны присутствовать, чтобы обеспечить загрузку правильных данных ассоциаций.
Параметры
-
Cake\ORM\Query$query - Запрос для получения полей.
Возвращает
arrayСписок полей для подзапроса.
eagerLoadersource public
eagerLoader( array $options )
requiresKeyssource public
requiresKeys( array $options [] )
Возвращает true, если процесс жадной загрузки потребует набор ключей привязки таблицы владельца, чтобы использовать их в качестве фильтра в запросе поиска.
Параметры
- array
$optionsнеобязательно [] - Параметры, содержащие используемую стратегию.
Возвращает
booleantrue, если список ключей потребуется
Методы, используемые из Cake\Core\ConventionsTrait
_camelizesource protected
_camelize( string $name )
Создает пришлизованную версию $name.
Параметры
- string
$name - название
Возвращает
stringПришлизованное имя
_entityNamesource protected
_entityName( string $name )
Создает соответствующее имя сущности (единственное число) для указанного имени.
Параметры
- string
$name - Имя
Возвращает
stringПришлизованное и множественное имя модели
_fixtureNamesource protected
_fixtureName( string $name )
Создаёт имя фикстуры.
Параметры
- string
$name - Имя класса модели
Возвращает
stringКлюч модели в единственном числе
_modelKeysource protected
_modelKey( string $name )
Создает соответствующий подчеркнутый ключ модели для ассоциаций.
Если вход содержит точку, предполагается, что правая часть — это фактическое имя таблицы.
Параметры
- string
$name - Имя класса модели
Возвращает
stringКлюч модели в единственном числе
_modelNameFromKeysource protected
_modelNameFromKey( string $key )
Создаёт имя модели из внешнего ключа.
Параметры
- string
$key - Внешний ключ
Возвращает
stringИмя модели
_pluginNamespacesource protected
_pluginNamespace( string $pluginName )
Возвращает имя пространства имён плагина.
Параметры
- строка
$pluginName - Имя плагина
Возвращает
stringПространство имён плагина
_pluginPathsource protected
_pluginPath( string $pluginName )
Находит правильный путь к плагину. Ищет плагин в $pluginPaths.
Параметры
- строка
$pluginName - Имя плагина, например, DebugKit
Возвращает
stringПуть к плагину.
_pluralHumanNamesource protected
_pluralHumanName( string $name )
Создаёт множественное число для имени, используемого в представлениях.
Параметры
- строка
$name - Имя контроллера
Возвращает
stringМножественное число имени
_singularHumanNamesource protected
_singularHumanName( string $name )
Создаёт единственное число для имени, используемого в представлениях.
Параметры
- строка
$name - Имя контроллера
Возвращает
stringЕдинственное число имени
_singularNamesource protected
_singularName( string $name )
Создаёт единственное число имени для использования в представлениях.
Параметры
- строка
$name - Используемое имя
Возвращает
stringИмя переменной
_variableNamesource protected
_variableName( string $name )
Создаёт множественное число имени для использования в представлениях.
Параметры
- строка
$name - Используемое имя
Возвращает
stringМножественное число для представлений
Методы, используемые из Cake\ORM\Locator\LocatorAwareTrait
tableLocatorsource public
tableLocator( Cake\ORM\Locator\LocatorInterface $tableLocator null )
Устанавливает локатор таблиц. Если параметры не переданы, возвращает текущий локатор.
Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocatorнеобязательно null - Экземпляр LocatorInterface.
Возвращает
Cake\ORM\Locator\LocatorInterface\Cake\ORM\Locator\LocatorInterface
Краткое описание констант
string | SAVE_APPEND Стратегия сохранения, которая только добавит к набору ссылок. | 'append' |
string | SAVE_REPLACE Стратегия сохранения, которая заменит ссылки предоставленным набором. | 'replace' |
Краткое описание констант, унаследованных от Cake\ORM\Association
MANY_TO_MANY, MANY_TO_ONE, ONE_TO_MANY, ONE_TO_ONE, STRATEGY_JOIN, STRATEGY_SELECT, STRATEGY_SUBQUERY |
Краткое описание свойств
Свойства, унаследованные от Cake\ORM\Association
$_bindingKeysource
protected строка|массив
Имя поля в таблице со стороны владельца, используемое для соответствия с foreignKey
$_cascadeCallbackssource
protected строка
Должны ли при каскадных удалениях также срабатывать обратные вызовы.
false $_conditionssource
protected массив
Список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации
[]
$_findersource
protected строка
Имя назначаемого по умолчанию поиска для извлечения строк из целевой таблицы
'all' $_foreignKeysource
protected строка|массив
Имя поля, представляющего внешний ключ для таблицы для загрузки
$_namesource
protected строка
Имя, данное ассоциации; оно обычно представляет алиас, назначенный целевой связанной таблице
$_propertyNamesource
protected строка
Имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
Свойства, используемые из Cake\ORM\Locator\LocatorAwareTrait
Свойства, используемые из Cake\ORM\Association\ExternalAssociationTrait
© 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.1/class-Cake.ORM.Association.BelongsToMany.html