Класс HasMany
Представляет отношение N - 1, где целевая сторона отношения будет иметь один или несколько записей на каждую запись в исходной стороне.
Пример ассоциации HasMany — Автор имеет много Статей.
Постоянные значения
-
stringMANY_TO_MANY'manyToMany'
Тип ассоциации для многих ко многим ассоциаций.
-
stringMANY_TO_ONE'manyToOne'
Тип ассоциации для многих к одному ассоциациям.
-
stringONE_TO_MANY'oneToMany'
Тип ассоциации для одного ко многим ассоциациям.
-
stringONE_TO_ONE'oneToOne'
Тип ассоциации для одного к одному ассоциациям.
-
stringSAVE_APPEND'append'
Стратегия сохранения, которая добавит только в существующий набор ссылок.
-
stringSAVE_REPLACE'replace'
Стратегия сохранения, которая заменит существующие ссылки предоставленным набором.
-
stringSTRATEGY_JOIN'join'
Имя стратегии для использования соединений при получении связанных записей.
-
stringSTRATEGY_SELECT'select'
Имя стратегии для использования запроса SELECT при получении связанных записей.
-
stringSTRATEGY_SUBQUERY'subquery'
Имя стратегии для использования подзапроса при получении связанных записей.
Краткое описание свойств
- $_bindingKey protected
array<string>|string|nullИмя поля в таблице владельца, используемое для сопоставления с foreignKey.
- $_cascadeCallbacks protected
boolВызывать ли обратные вызовы при каскадном удалении.
- $_className protected
stringИмя класса объекта целевой таблицы.
- $_conditions protected
Closure|arrayСписок условий, которые всегда должны включаться при получении записей из целевой ассоциации.
- $_dependent protected
boolЗависит ли запись в целевой таблице от исходной таблицы. Часто используется, чтобы указать, что записи должны быть удалены, если запись владельца в исходной таблице удалена.
- $_finder protected
array|stringИмя используемого по умолчанию findera для получения строк из целевой таблицы. С массивом значениями, имя findera и значения по умолчанию разрешены.
- $_foreignKey protected
array<string>|stringИмя поля, представляющего внешний ключ к таблице для загрузки.
- $_joinType protected
stringТип соединения, который будет использоваться при добавлении ассоциации в запрос.
- $_name protected
stringИмя ассоциации, обычно представляющее псевдоним, назначенный целевой связанной таблице.
- $_propertyName protected
stringИмя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
- $_saveStrategy protected
stringСтратегия сохранения, которая должна использоваться этой ассоциацией.
- $_sort protected
mixedПорядок, в котором должны возвращаться целевые записи.
- $_sourceTable protected
Cake\ORM\TableЭкземпляр исходной таблицы.
- $_strategy protected
stringИмя стратегии, которое должно использоваться для получения связанных записей.
- $_tableLocator protected
Cake\ORM\Locator\LocatorInterface|nullЭкземпляр локатора таблиц.
- $_targetTable protected
Cake\ORM\TableЭкземпляр целевой таблицы.
- $_validStrategies protected
array<string>Допустимые стратегии для этого типа ассоциации.
- $defaultTable protected
string|nullПсевдоним таблицы по умолчанию для этого объекта.
Краткое описание методов
-
__call() public
Замещает вызовы методов на целевой таблице.
-
__construct() public
Конструктор. Подклассы могут переопределить функцию _options, чтобы получить исходный список переданных параметров, если ожидаются какие-либо другие специальные ключи.
-
__get() public
Замещает получение свойств на целевой таблице. Это удобно для получения ассоциаций этой ассоциации.
-
__isset() public
Замещает вызов isset на целевой таблице. Это удобно для проверки наличия другой ассоциации на целевой таблице с заданным именем.
-
_appendFields() protected
Вспомогательная функция, используемая для условного добавления полей к фрагменту SELECT запроса из полей, найденных в другом объекте запроса.
-
_appendNotMatching() protected
Условно добавляет условие к переданному запросу, которое заставит его находить записи, где нет соответствия с этой ассоциацией.
-
_bindNewAssociations() protected
Применяет все присоединяемые ассоциации к
$queryиз контейнеров, найденных в запросе$surrogate. -
_camelize() protected
Создаёт версию $name в стиле camelCase.
-
_dispatchBeforeFind() protected
Вызывает beforeFind на целевой таблице для запроса, к которому присоединяется эта ассоциация.
-
_entityName() protected
Создаёт правильное имя сущности (единственное число) для указанного имени.
-
_extractFinder() protected
Вспомогательный метод для вывода запрошенного нахождения и его параметров.
-
_fixtureName() protected
Создаёт имя фикстуры.
-
_foreignKeyAcceptsNull() protected
Проверяет флаг nullable для внешнего ключа.
-
_formatAssociationResults() protected
Добавляет функцию форматирования к переданному
$query, если запрос$surrogateобъявляет другую функцию форматирования. Поскольку запрос$surrogateсоответствует целевой таблице ассоциации, результирующая функция форматирования будет результатом применения функций форматирования только к свойству, соответствующему этой таблице. -
_joinCondition() protected
Возвращает одно или несколько условий, которые нужно добавить к генерируемому фрагменту JOIN для получения результатов на целевой таблице.
-
_modelKey() protected
Создаёт правильный нижнеподчёркнутый ключ модели для ассоциаций.
-
_modelNameFromKey() protected
Создаёт правильное имя модели из внешнего ключа.
-
_options() protected
Обрабатывает дополнительные параметры, переданные в конструкторе.
-
_pluginNamespace() protected
Возвращает пространство имён плагина.
-
_pluginPath() protected
Находит правильный путь для плагина. Ищет плагин в $pluginPaths.
-
_pluralHumanName() protected
Создаёт множественное имя, используемое в представлениях.
-
_propertyName() protected
Возвращает имя свойства по умолчанию, основанное на имени ассоциации.
-
_saveTarget() protected
Сохраняет каждую из сущностей в целевой таблице и создаёт связи между родительской сущностью и каждой из сохранённых целевых сущностей.
-
_singularHumanName() protected
Создаёт единственное имя, используемое в представлениях.
-
_singularName() protected
Создаёт единственное имя для использования в представлениях.
-
_unlink() protected
Удаляет/устанавливает null связанные объекты, соответствующие условиям $conditions.
-
_unlinkAssociated() protected
Удаляет/устанавливает null связанные объекты в соответствии с зависимостью между источником и целевыми объектами и допустимостью NULL для внешних ключей. Пропускает удаление записей, присутствующих в $remainingEntities.
-
_variableName() protected
Создаёт множественное имя переменной для представлений.
-
attachTo() public
Изменяет объект Query для включения данных связанной целевой таблицы в конечный результат.
-
canBeJoined() public
Можно ли выразить эту ассоциацию напрямую в соединении запроса.
-
cascadeDelete() public
Обрабатывает каскадное удаление из связанной модели.
-
defaultRowValue() public
Возвращает изменённую строку после добавления свойства для этой ассоциации с пустым значением по умолчанию в зависимости от того, была ли ассоциация присоединена или получена внешне.
-
deleteAll() public
Замещает операцию удаления методом deleteAll целевой таблицы.
-
eagerLoader() public
Загружает жадно список записей в целевой таблице, связанных с другим набором записей в исходной таблице. Записи источника могут быть указаны двумя способами: первый — путём передачи объекта Query, настроенного для поиска в исходной таблице, а второй — путём явного указания массива значений первичного ключа из исходной таблицы.
-
exists() public
Замещает операцию на метод exists целевой таблицы после добавления стандартных условий для этой ассоциации.
-
fetchTable() public
Удобный метод для получения экземпляра таблицы.
-
find() public
Замещает операцию поиска методом find целевой таблицы и изменяет запрос в соответствии с конфигурацией этой ассоциации.
-
getBindingKey() public
Получает имя поля, представляющего поле привязки к целевой таблице. Если не указано явно, используется первичный ключ таблицы, владеющей стороной.
-
getCascadeCallbacks() public
Получает, нужно ли также вызывать обратные вызовы при каскадных удалениях.
-
getClassName() public
Получает имя класса объекта целевой таблицы.
-
getConditions() public
Получает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.
-
getDependent() public
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
-
getFinder() public
Получает используемый по умолчанию поиск для извлечения строк из целевой таблицы.
-
getForeignKey() public
Получает имя поля, представляющего внешний ключ к исходной таблице.
-
getJoinType() public
Получает тип объединения, который будет использоваться при добавлении ассоциации в запрос.
-
getName() public
Получает имя этой ассоциации, обычно псевдоним, назначенный целевой связанной таблице.
-
getProperty() public
Получает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
-
getSaveStrategy() public
Получает стратегию, которая должна использоваться для сохранения.
-
getSort() public
Получает порядок сортировки, в котором должны возвращаться записи цели.
-
getSource() public
Получает экземпляр таблицы для стороны источника ассоциации.
-
getStrategy() public
Получает имя стратегии, которое будет использоваться для извлечения связанных записей. Имейте в виду, что некоторые типы ассоциаций могут не реализовывать, но по умолчанию стратегия, делая любые изменения в этом параметре бессмысленными.
-
getTableLocator() public
Получает локатор таблицы.
-
getTarget() public
Получает экземпляр таблицы для целевой стороны ассоциации.
-
isOwningSide() public
Возвращает значение true, если переданная таблица является стороной владения для этой ассоциации. Это означает, что строки в таблице «target» будут пропускать важную или необходимую информацию, если строка в таблице «source» не существует.
-
link() public
Связывает сущность источника с каждой из переданных сущностей цели. При использовании этого метода все сущности в
$targetEntitiesбудут добавлены к свойству сущности источника, соответствующему этому объекту ассоциации. -
replace() public
Заменяет существующие связи ассоциации между сущностью источника и целью на те, что переданы. Этот метод выполняет интеллектуальную очистку, связи, которые уже сохранены и присутствуют в
$targetEntitiesне будут удалены, новые связи будут созданы для переданных сущностей цели, которые еще не находятся в базе данных, а остальные будут удалены. -
requiresKeys() public
Возвращает true, если процесс жадного загрузки потребует набор связывающих ключей таблицы владения, чтобы использовать их в качестве фильтра в запросе поиска.
-
saveAssociated() public
Принимает сущность из исходной таблицы и проверяет, есть ли поле, соответствующее имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации, передав предоставленные
$options. -
setBindingKey() public
Устанавливает имя поля, представляющего поле связи с целевой таблицей. Если не указано вручную, используется первичный ключ таблицы владения.
-
setCascadeCallbacks() public
Устанавливает, должны ли также выполняться обратные вызовы при каскадных удалениях.
-
setClassName() public
Устанавливает имя класса объекта целевой таблицы.
-
setConditions() public
Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.
-
setDependent() public
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
-
setFinder() public
Устанавливает используемый по умолчанию поиск для извлечения строк из целевой таблицы.
-
setForeignKey() public
Устанавливает имя поля, представляющего внешний ключ к целевой таблице.
-
setJoinType() public
Устанавливает тип объединения, который будет использоваться при добавлении ассоциации в запрос.
-
setName() public deprecated
Устанавливает имя этой ассоциации, обычно псевдоним, назначенный целевой связанной таблице.
-
setProperty() public
Устанавливает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
-
setSaveStrategy() public
Устанавливает стратегию, которая должна использоваться для сохранения.
-
setSort() public
Устанавливает порядок сортировки, в котором должны возвращаться записи цели.
-
setSource() public
Устанавливает экземпляр таблицы для стороны источника ассоциации.
-
setStrategy() public
Устанавливает имя стратегии, которое будет использоваться для извлечения связанных записей. Имейте в виду, что некоторые типы ассоциаций могут не реализовывать, но по умолчанию стратегию, делая любые изменения в этом параметре бессмысленными.
-
setTableLocator() public
Устанавливает локатор таблицы.
-
setTarget() public
Устанавливает экземпляр таблицы для целевой стороны ассоциации.
-
transformRow() public
Правильно вкладывает значения связанных строк результатов в правильные ключи массива внутри исходных результатов.
-
type() public
Получить тип взаимоотношений.
-
unlink() public
Удаляет все связи между переданной сущностью источника и каждой из предоставленных сущностей цели. Этот метод предполагает, что все переданные объекты уже сохранены в базе данных и что каждый из них содержит значение первичного ключа.
-
updateAll() public
Делегирует операцию обновления методу updateAll целевой таблицы.
Подробное описание методов
__call() public
__call(string $method, array $argument): mixed
Перенаправляет вызовы методов на целевую таблицу.
Параметры
-
string$method имя вызываемого метода
-
array$argument Список аргументов, переданных в функцию
Возвращает
mixedИсключения
BadMethodCallException__construct() public
__construct(string $alias, array<string, mixed> $options = [])
Конструктор. Подклассы могут переопределить функцию _options, чтобы получить исходный список переданных параметров, если ожидают какой-либо другой специальный ключ
Параметры
-
string$alias Имя, данное ассоциации
-
array<string, mixed>$options optional Список свойств, которые должны быть установлены для этого объекта
__get() public
__get(string $property): Cake\ORM\Association
Перенаправляет получение свойства на целевую таблицу. Это удобно для получения ассоциаций этой ассоциации
Параметры
-
string$property имя свойства
Возвращает
Cake\ORM\AssociationИсключения
RuntimeExceptionесли ассоциация с таким именем не существует
__isset() public
__isset(string $property): bool
Перенаправляет вызов isset на целевую таблицу. Это удобно для проверки, есть ли у целевой таблицы другая ассоциация с переданным именем
Параметры
-
string$property имя свойства
Возвращает
bool_appendFields() protected
_appendFields(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array<string, mixed> $options): void
Вспомогательная функция, используемая для условного добавления полей в предложение select запроса из полей, найденных в другом объекте запроса.
Параметры
-
Cake\ORM\Query$query запрос, к которому будут добавлены поля
-
Cake\ORM\Query$surrogate запрос, содержащий поля, которые нужно скопировать
-
array<string, mixed>$options параметры, переданные методу
attachTo
Возвращает
void_appendNotMatching() protected
_appendNotMatching(Cake\ORM\Query $query, array<string, mixed> $options): void
Условно добавляет условие в переданный запрос Query, которое позволит ему находить записи, где нет соответствия с этой ассоциацией.
Параметры
-
Cake\ORM\Query$query Запрос для изменения
-
array<string, mixed>$options Массив параметров, содержащий ключ
negateMatch.
Возвращает
void_bindNewAssociations() protected
_bindNewAssociations(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array<string, mixed> $options): void
Применяет все подключаемые ассоциации к $query из содержащихся элементов, найденных в запросе $surrogate.
Копирует все содержащиеся ассоциации из запроса $surrogate в переданный $query. Содержащиеся элементы изменяются таким образом, чтобы они соответствовали цепочке ассоциаций, из которой они произошли.
Параметры
-
Cake\ORM\Query$query запрос, к которому будут прикреплены ассоциации
-
Cake\ORM\Query$surrogate запрос, содержащий содержащиеся элементы, которые нужно прикрепить
-
array<string, mixed>$options параметры, переданные методу
attachTo
Возвращает
void_camelize() protected
_camelize(string $name): string
Создает версию $name в стиле camelCase
Параметры
-
string$name имя
Возвращает
string_dispatchBeforeFind() protected
_dispatchBeforeFind(Cake\ORM\Query $query): void
Вызывает beforeFind в целевой таблице для запроса, к которому подключается эта ассоциация
Параметры
-
Cake\ORM\Query$query запрос, к которому подключается эта ассоциация
Возвращает
void_entityName() protected
_entityName(string $name): string
Создает правильное имя сущности (единственное число) для указанного имени
Параметры
-
string$name Имя
Возвращает
string_extractFinder() protected
_extractFinder(array|string $finderData): array
Вспомогательный метод для вывода запрошенного findera и его параметров.
Возвращает выведенные параметры из findera $type.
Примеры:
Следующий код вызовет finder 'translations' со значением findera в качестве его параметров: $query->contain(['Comments' => ['finder' => ['translations']]]); $query->contain(['Comments' => ['finder' => ['translations' => []]]]); $query->contain(['Comments' => ['finder' => ['translations' => ['locales' => ['en_US']]]]]);
Параметры
-
array|string$finderData Имя findera или массив, содержащий имя в качестве ключа и параметры в качестве значения.
Возвращает
array_fixtureName() protected
_fixtureName(string $name): string
Создает имя фикстуры
Параметры
-
string$name Имя класса модели
Возвращает
string_foreignKeyAcceptsNull() protected
_foreignKeyAcceptsNull(Cake\ORM\Table $table, array $properties): bool
Проверяет флаг nullable внешнего ключа
Параметры
-
Cake\ORM\Table$table таблица, содержащая внешний ключ
-
array$properties список полей, составляющих внешний ключ
Возвращает
bool_formatAssociationResults() protected
_formatAssociationResults(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array<string, mixed> $options): void
Добавляет функцию форматирования к переданному $query, если запрос $surrogate объявляет какой-либо другой форматтер. Поскольку запрос $surrogate соответствует связанной целевой таблице, результирующий форматтер будет результатом применения суррогатных форматтеров только к свойству, соответствующему такой таблице.
Параметры
-
Cake\ORM\Query$query запрос, к которому будет применена функция форматирования
-
Cake\ORM\Query$surrogate запрос, содержащий форматтеры для связанной целевой таблицы.
-
array<string, mixed>$options параметры, переданные методу
attachTo
Возвращает
void_joinCondition() protected
_joinCondition(array<string, mixed> $options): array
Возвращает одно или несколько условий, которые должны быть добавлены к сгенерированному предложению join для получения результатов в целевой таблице.
Параметры
-
array<string, mixed>$options список параметров, переданных методу attachTo
Возвращает
arrayИсключения
RuntimeExceptionесли количество столбцов во внешнем ключе не совпадает с количеством столбцов в первичном ключе исходной таблицы
_modelKey() protected
_modelKey(string $name): string
Создает правильный подчеркнутый ключ модели для ассоциаций
Если входные данные содержат точку, предполагается, что правая часть является реальным именем таблицы.
Параметры
-
string$name Имя класса модели
Возвращает
string_modelNameFromKey() protected
_modelNameFromKey(string $key): string
Создаёт правильное имя модели по внешнему ключу
Параметры
-
string$key Внешний ключ
Возвращает
string_options() protected
_options(array<string, mixed> $options): void
Обрабатывает дополнительные параметры, переданные в конструктор.
Параметры
-
array<string, mixed>$options исходный список параметров, переданных в конструктор
Возвращает
void_pluginNamespace() protected
_pluginNamespace(string $pluginName): string
Возвращает имя пространства имён плагина
Параметры
-
string$pluginName Имя плагина
Возвращает
string_pluginPath() protected
_pluginPath(string $pluginName): string
Находит правильный путь для плагина. Проверяет $pluginPaths, чтобы найти нужный плагин.
Параметры
-
string$pluginName Имя плагина, например DebugKit
Возвращает
string_pluralHumanName() protected
_pluralHumanName(string $name): string
Создаёт множественное число человекочитаемого имени, используемого в представлениях
Параметры
-
string$name Имя контроллера
Возвращает
string_propertyName() protected
_propertyName(): string
Возвращает имя свойства по умолчанию, основанное на имени ассоциации.
Возвращает
string_saveTarget() protected
_saveTarget(array $foreignKeyReference, Cake\Datasource\EntityInterface $parentEntity, array $entities, array<string, mixed> $options): bool
Сохраняет каждый из сущностей в целевой таблице и создаёт связи между родительской сущностью и каждой сохранённой целевой сущностью.
Параметры
-
array$foreignKeyReference Внешний ключ, определяющий связь между целевой сущностью и родительской сущностью.
-
Cake\Datasource\EntityInterface$parentEntity Исходная сущность, содержащая целевые сущности для сохранения.
-
array$entities список сущностей для сохранения в целевой таблице и создания связи с родительской сущностью
-
array<string, mixed>$options список параметров, принимаемых
Table::save().
Возвращает
bool_singularHumanName() protected
_singularHumanName(string $name): string
Создаёт единственное число человекочитаемого имени, используемого в представлениях
Параметры
-
string$name Имя контроллера
Возвращает
string_singularName() protected
_singularName(string $name): string
Создаёт единственное число имени для использования в представлениях.
Параметры
-
string$name Используемое имя
Возвращает
string_unlink() protected
_unlink(array $foreignKey, Cake\ORM\Table $target, array $conditions = [], array<string, mixed> $options = []): bool
Удаляет/устанавливает NULL связанные объекты, соответствующие условиям $conditions.
Действие зависит от зависимости между источником и целевыми объектами, а также от возможности значения NULL для внешних ключей.
Параметры
-
array$foreignKey массив свойств внешнего ключа
-
Cake\ORM\Table$target Связанная таблица
-
array$conditions optional Условие, определяющее объекты, которые нужно разорвать
-
array<string, mixed>$options optional список параметров, принимаемых
Table::delete()
Возвращает
bool_unlinkAssociated() protected
_unlinkAssociated(array $foreignKeyReference, Cake\Datasource\EntityInterface $entity, Cake\ORM\Table $target, iterable $remainingEntities = [], array<string, mixed> $options = []): bool
Удаляет/устанавливает NULL связанные объекты в зависимости от зависимости между источником и целевыми объектами и от возможности значения NULL для внешних ключей. Пропускает удаление записей, присутствующих в $remainingEntities
Параметры
-
array$foreignKeyReference Внешний ключ, определяющий связь между целевой сущностью и родительской сущностью.
-
Cake\Datasource\EntityInterface$entity сущность, у которой должны быть удалены связанные сущности
-
Cake\ORM\Table$target Связанная таблица
-
iterable$remainingEntities optional Сущности, которые не нужно удалять
-
array<string, mixed>$options optional список параметров, принимаемых
Table::delete()
Возвращает
bool_variableName() protected
_variableName(string $name): string
Создаёт множественное число имени переменной для представлений
Параметры
-
string$name Используемое имя
Возвращает
stringattachTo() public
attachTo(Cake\ORM\Query $query, array<string, mixed> $options = []): void
Изменяет объект запроса, чтобы включить данные связанной целевой таблицы в окончательный результат.
Массив параметров принимает следующие ключи:
- includeFields: Включать ли поля целевой модели в результат
- foreignKey: Имя поля, используемого в качестве внешнего ключа, если false, не используется
- conditions: массив с списком условий для фильтрации соединения, он будет объединён с любыми условиями, первоначально настроенными для этой ассоциации
- fields: список полей в целевой таблице для включения в результат
- aliasPath: Строка, разделённая точками, представляющая путь имён ассоциаций, от основной таблицы переданного запроса к этой ассоциации.
- propertyPath: Строка, разделённая точками, представляющая путь свойств ассоциаций, которые необходимо проследить от переданной сущности запроса к этой ассоциации
- joinType: Тип SQL-соединения для использования в запросе.
- negateMatch: Добавляет условие в переданный запрос для исключения совпадений с этой ассоциацией.
Параметры
-
Cake\ORM\Query$query запрос, который необходимо изменить, чтобы включить данные целевой таблицы
-
array<string, mixed>$options optional Дополнительные параметры или переопределения, которые необходимо учитывать
Возвращает
voidВозбуждает
RuntimeExceptionНе удалось построить запрос или ассоциации.
canBeJoined() public
canBeJoined(array<string, mixed> $options = []): bool
Возвращает, можно ли выразить эту ассоциацию непосредственно в соединении запроса
Параметры
-
array<string, mixed>$options optional дополнительные параметры, которые могут повлиять на результат
Возвращает
boolcascadeDelete() public
cascadeDelete(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool
Обрабатывает каскадное удаление из связанной модели.
Каждый реализуемый класс должен обрабатывать каскадное удаление, как требуется.
Параметры
-
Cake\Datasource\EntityInterface$entity -
array<string, mixed>$options optional
Возвращает
booldefaultRowValue() public
defaultRowValue(array<string, mixed> $row, bool $joined): array<string, mixed>
Возвращает изменённую строку после добавления свойства для этой ассоциации с пустым значением по умолчанию в зависимости от того, была ли ассоциация присоединена или получена внешним образом.
Параметры
-
array<string, mixed>$row -
bool$joined
Возвращает
array<string, mixed>deleteAll() public
deleteAll(Cake\Database\ExpressionInterfaceClosure|array|string|null $conditions): int
Передает операцию удаления методу deleteAll целевой таблицы
Parameters
-
Cake\Database\ExpressionInterfaceClosure|array|string|null$conditions Условия, которые будут использоваться, принимает все, что может принимать Query::where().
Returns
intSee Also
eagerLoader() public
eagerLoader(array<string, mixed> $options): Closure
Загружает список записей в целевой таблице, которые связаны с другим набором записей в исходной таблице. Исходные записи могут быть указаны двумя способами: первый — путем передачи объекта Query, настроенного для поиска в исходной таблице, а второй — путем явной передачи массива значений первичных ключей из исходной таблицы.
Необходимый способ передачи связанных исходных записей контролируется параметром "strategy". Когда используется стратегия подзапроса, потребуется запрос к исходной таблице. При использовании стратегии выбора будет использоваться список первичных ключей.
Возвращает замыкание, которое должно выполняться для каждой записи, возвращаемой в определенном запросе Query. Эта вызываемая функция будет отвечать за внедрение полей, связанных с каждой конкретной переданной строкой.
Массив options принимает следующие ключи:
- query: Объект Query, настроенный для поиска записей в исходной таблице
- keys: Список значений первичных ключей из исходной таблицы
- foreignKey: Имя поля, используемого для связи обеих таблиц
- conditions: Список условий, которые будут переданы методу where() запроса
- sort: Направление, в котором записи должны быть возвращены
- fields: Список полей для выбора из целевой таблицы
- contain: Список связанных таблиц для загрузки связанных с целевой таблицей
- strategy: Имя стратегии, которую нужно использовать для поиска записей в целевой таблице
- nestKey: Ключ массива, под которым будут найдены результаты при преобразовании строки
Parameters
-
array<string, mixed>$options
Returns
Closureexists() public
exists(Cake\Database\ExpressionInterfaceClosure|array|string|null $conditions): bool
Передает операцию методу exists целевой таблицы после добавления условий по умолчанию для этой связи
Parameters
-
Cake\Database\ExpressionInterfaceClosure|array|string|null$conditions Условия, которые будут использоваться для проверки соответствия какой-либо записи.
Returns
boolSee Also
fetchTable() public
fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table
Вспомогательный метод для получения экземпляра таблицы.
Parameters
-
string|null$alias optional Имя псевдонима, которое вы хотите получить. Должно быть в формате CamelCase. Если
null, используется значение свойства $defaultTable.-
array<string, mixed>$options optional Параметры, с которыми вы хотите создать таблицу. Если таблица уже загружена, параметры реестра будут проигнорированы.
Returns
Cake\ORM\TableThrows
Cake\Core\Exception\CakeExceptionЕсли аргумент `$alias` и свойство `$defaultTable` оба равны `null`.
See Also
find() public
find(array<string, mixed>|string|null $type = null, array<string, mixed> $options = []): Cake\ORM\Query
Передает операцию поиска методу find целевой таблицы и соответствующим образом изменяет запрос на основе конфигурации этой связи
Parameters
-
array<string, mixed>|string|null$type optional тип запроса для выполнения, если передается массив, он будет интерпретироваться как параметр
$options-
array<string, mixed>$options optional Параметры для поиска
Returns
Cake\ORM\QuerySee Also
getBindingKey() public
getBindingKey(): array<string>|string
Возвращает имя поля, представляющего поле связывания с целевой таблицей. Если не указано вручную, используется первичный ключ таблицы владеющей стороны.
Returns
array<string>|stringgetCascadeCallbacks() public
getCascadeCallbacks(): bool
Возвращает, следует ли также вызывать обратные вызовы при каскадных удалениях.
Returns
boolgetClassName() public
getClassName(): string
Возвращает имя класса объекта целевой таблицы.
Returns
stringgetConditions() public
getConditions(): Closure|array
Возвращает список условий, которые всегда должны включаться при извлечении записей из целевой связи.
Returns
Closure|arraySee Also
getDependent() public
getDependent(): bool
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
Это в основном используется для указания того, что записи должны быть удалены, если владеющая запись в исходной таблице удалена.
Returns
boolgetFinder() public
getFinder(): array|string
Возвращает средство поиска по умолчанию, используемое для извлечения строк из целевой таблицы.
Returns
array|stringgetForeignKey() public
getForeignKey(): array<string>|string
Возвращает имя поля, представляющего внешний ключ к исходной таблице.
Returns
array<string>|stringgetJoinType() public
getJoinType(): string
Возвращает тип соединения, которое будет использоваться при добавлении связи к запросу.
Returns
stringgetName() public
getName(): string
Возвращает имя для этой связи, обычно псевдоним, присвоенный целевой связанной таблице
Returns
stringgetProperty() public
getProperty(): string
Возвращает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
Returns
stringgetSaveStrategy() public
getSaveStrategy(): string
Возвращает стратегию, которая должна использоваться для сохранения.
Returns
stringgetSort() public
getSort(): mixed
Возвращает порядок сортировки, в котором должны возвращаться целевые записи.
Returns
mixedgetSource() public
getSource(): Cake\ORM\Table
Возвращает экземпляр таблицы для исходной стороны связи.
Returns
Cake\ORM\TablegetStrategy() public
getStrategy(): string
Возвращает имя стратегии, которая будет использоваться для извлечения связанных записей. Имейте в виду, что некоторые типы связей могут не реализовывать, а только стратегию по умолчанию, что делает любые изменения этого параметра недействительными.
Returns
stringgetTableLocator() public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Возвращает локатор таблицы.
Returns
Cake\ORM\Locator\LocatorInterfacegetTarget() public
getTarget(): Cake\ORM\Table
Возвращает экземпляр таблицы для целевой стороны связи.
Returns
Cake\ORM\TableisOwningSide() public
isOwningSide(Cake\ORM\Table $side): bool
Возвращает значение, указывающее, является ли переданная таблица стороной владения для этого ассоциации. Это означает, что строки в таблице 'target' будут содержать неполную или необходимую информацию, если строка в 'source' не существует.
Параметры
-
Cake\ORM\Table$side Возможная таблица с владением
Возвращает
boollink() public
link(Cake\Datasource\EntityInterface $sourceEntity, array $targetEntities, array<string, mixed> $options = []): bool
Связывает исходную сущность с каждой из переданных целевых сущностей. При использовании этого метода все сущности в $targetEntities будут добавлены к свойству исходной сущности, соответствующему этому объекту ассоциации.
Этот метод не проверяет уникальность ссылок. Изменения сохраняются в базе данных, а также в исходной сущности.
Пример:
$user = $users->get(1);
$allArticles = $articles->find('all')->toArray();
$users->Articles->link($user, $allArticles); $user->get('articles') будет содержать все статьи из $allArticles после связывания
Параметры
-
Cake\Datasource\EntityInterface$sourceEntity строка, принадлежащая стороне
sourceэтой ассоциации-
array$targetEntities список сущностей, принадлежащих стороне
targetэтой ассоциации-
array<string, mixed>$options optional список параметров, передаваемых внутреннему вызову
save
Возвращает
boolreplace() public
replace(Cake\Datasource\EntityInterface $sourceEntity, array $targetEntities, array<string, mixed> $options = []): bool
Заменяет существующие связи ассоциации между исходной сущностью и целевой на переданные. Этот метод выполняет интеллектуальную очистку, ссылки, которые уже сохранены и присутствуют в $targetEntities, не будут удалены, новые ссылки будут созданы для переданных целевых сущностей, которые еще не находятся в базе данных, а остальные будут удалены.
Например, если у автора много статей, таких как 'статья1', 'статья 2' и 'статья 3', и вы передаете этому методу массив, содержащий сущности для статей 'статья 1' и 'статья 4', только ссылка на 'статья 1' будет сохранена в базе данных, ссылки на 'статья 2' и 'статья 3' будут удалены, а ссылка на 'статья 4' будет создана.
Существующие ссылки не удаляются и не создаются заново, они либо остаются неизменными, либо обновляются.
Этот метод не проверяет уникальность ссылок.
При успехе, переданный $sourceEntity будет содержать $targetEntities в качестве значения в соответствующем свойстве для этой ассоциации.
Дополнительные параметры для сохранения новых ссылок можно передать в третьем аргументе, см. Table::save() для информации о поддерживаемых параметрах.
Пример:
$author->articles = [$article1, $article2, $article3, $article4];
$authors->save($author);
$articles = [$article1, $article3];
$authors->getAssociation('articles')->replace($author, $articles); $author->get('articles') будет содержать только [$article1, $article3] в конце
Параметры
-
Cake\Datasource\EntityInterface$sourceEntity сущность, сохранённая в исходной таблице для этой ассоциации
-
array$targetEntities список сущностей из целевой таблицы, которые должны быть связаны
-
array<string, mixed>$options optional список параметров, которые будут переданы внутренним вызовам
save/deleteпри сохранении/обновлении новых ссылок или удалении существующих
Возвращает
boolИсключения
InvalidArgumentExceptionесли переданы не сохраненные сущности или любая из них отсутствует первичный ключ
requiresKeys() public
requiresKeys(array<string, mixed> $options = []): bool
Возвращает true, если процесс жадного загрузки потребует набор связывающих ключей таблицы владения, чтобы использовать их в качестве фильтра в запросе поиска.
Параметры
-
array<string, mixed>$options optional Параметры, содержащие используемую стратегию.
Возвращает
boolsaveAssociated() public
saveAssociated(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): Cake\Datasource\EntityInterface|false
Принимает сущность из исходной таблицы и проверяет наличие поля, соответствующего имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации, передав предоставленные $options
Параметры
-
Cake\Datasource\EntityInterface$entity сущность из исходной таблицы
-
array<string, mixed>$options optional параметры, которые будут переданы методу сохранения в целевой таблице
Возвращает
Cake\Datasource\EntityInterface|falseИсключения
InvalidArgumentExceptionкогда данные ассоциации не могут быть обработаны.
См. также
setBindingKey() public
setBindingKey(array<string>|string $key): $this
Устанавливает имя поля, представляющего поле привязки к целевой таблице. Если не указано явно, используется первичный ключ таблицы владения.
Параметры
-
array<string>|string$key поле или поля таблицы, которые будут использоваться для связи обеих таблиц
Возвращает
$thissetCascadeCallbacks() public
setCascadeCallbacks(bool $cascadeCallbacks): $this
Устанавливает, должны ли также срабатывать обратные вызовы при каскадном удалении.
Параметры
-
bool$cascadeCallbacks значение переключателя каскадных обратных вызовов
Возвращает
$thissetClassName() public
setClassName(string $className): $this
Устанавливает имя класса объекта целевой таблицы.
Параметры
-
string$className Имя класса для установки.
Возвращает
$thisИсключения
InvalidArgumentExceptionВ случае, если имя класса установлено после разрешения целевой таблицы, и оно не соответствует имени класса целевой таблицы.
setConditions() public
setConditions(Closure|array $conditions): $this
Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.
Параметры
-
Closure|array$conditions список условий для использования
Возвращает
$thisСм. также
setDependent() public
setDependent(bool $dependent): $this
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
Это используется в основном для указания, что записи должны быть удалены, если запись-владелец в исходной таблице удаляется.
Если параметры не переданы, возвращается текущее значение.
Параметры
-
bool$dependent Установить зависимый режим. Используйте null для чтения текущего состояния.
Возвращает
$thissetFinder() public
setFinder(array|string $finder): $this
Устанавливает используемый по умолчанию поиск для извлечения строк из целевой таблицы.
Параметры
-
array|string$finder имя используемого поиска или массив из имени поиска и параметра.
Возвращает
$thissetForeignKey() public
setForeignKey(array<string>|string $key): $this
Устанавливает имя поля, представляющего внешний ключ к целевой таблице.
Параметры
-
array<string>|string$key ключ или ключи, которые будут использоваться для связи обеих таблиц
Возвращает
$thissetJoinType() public
setJoinType(string $type): $this
Устанавливает тип соединения, который будет использоваться при добавлении ассоциации в запрос.
Параметры
-
string$type тип соединения (например, INNER)
Возвращает
$thissetName() public
setName(string $name): $this
Устанавливает имя для этой ассоциации, обычно псевдоним, назначенный целевой таблице-ассоциации
Параметры
-
string$name Назначаемое имя
Возвращает
$thissetProperty() public
setProperty(string $name): $this
Устанавливает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
Параметры
-
string$name Имя свойства ассоциации. Используйте null для чтения текущего значения.
Возвращает
$thissetSaveStrategy() public
setSaveStrategy(string $strategy): $this
Устанавливает стратегию, которая должна использоваться для сохранения.
Параметры
-
string$strategy имя используемой стратегии
Возвращает
$thisИсключения
InvalidArgumentExceptionесли передано недопустимое имя стратегии
setSort() public
setSort(mixed $sort): $this
Устанавливает порядок сортировки, в котором должны возвращаться записи целевой таблицы.
Параметры
-
mixed$sort Оператор сортировки, совместимый с find()
Возвращает
$thissetSource() public
setSource(Cake\ORM\Table $table): $this
Устанавливает экземпляр таблицы для стороны источника ассоциации.
Параметры
-
Cake\ORM\Table$table экземпляр, который необходимо назначить как сторону источника
Возвращает
$thissetStrategy() public
setStrategy(string $name): $this
Устанавливает имя стратегии, которая должна использоваться для извлечения связанных записей. Имейте в виду, что некоторые типы ассоциаций могут не реализовывать, но использовать по умолчанию стратегию, делая любые изменения в этом параметре недействительными.
Параметры
-
string$name Тип стратегии. Используйте null для чтения текущего значения.
Возвращает
$thisИсключения
InvalidArgumentExceptionПри передаче неверной стратегии.
setTableLocator() public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
Устанавливает локатор таблицы.
Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocator Экземпляр LocatorInterface.
Возвращает
$thissetTarget() public
setTarget(Cake\ORM\Table $table): $this
Устанавливает экземпляр таблицы для стороны назначения ассоциации.
Параметры
-
Cake\ORM\Table$table экземпляр, который необходимо назначить как сторону назначения
Возвращает
$thistransformRow() public
transformRow(array $row, string $nestKey, bool $joined, string|null $targetProperty = null): array
Правильно вкладывает значения результата строки, связанные с ассоциацией, в правильные ключи массива внутри исходных результатов.
Параметры
-
array$row Строка для преобразования
-
string$nestKey Ключ массива, в котором должны находиться результаты этой ассоциации
-
bool$joined Является ли строка результатом прямого объединения с этой ассоциацией
-
string|null$targetProperty optional Имя свойства в исходных результатах, где данные ассоциации должны быть вложены. Будет использоваться значение по умолчанию, если не указано.
Возвращает
arraytype() public
type(): string
Получить тип отношения.
Возвращает
stringunlink() public
unlink(Cake\Datasource\EntityInterface $sourceEntity, array $targetEntities, array<string, mixed>|bool $options = []): void
Удаляет все связи между переданной сущностью источника и каждой из переданных сущностей назначения. Этот метод предполагает, что все переданные объекты уже сохранены в базе данных и что каждый из них содержит значение первичного ключа.
Параметры
В дополнение к стандартным параметрам, принимаемым Table::delete(), поддерживаются следующие ключи:
- cleanProperty: Удалять ли все объекты в
$targetEntities, хранящиеся в$sourceEntity(по умолчанию: true)
По умолчанию этот метод сбросит каждый из объектов сущности, хранящихся внутри сущности источника.
Изменения сохраняются в базе данных, а также в сущности источника.
Пример:
$user = $users->get(1); $user->articles = [$article1, $article2, $article3, $article4]; $users->save($user, ['Associated' => ['Articles']]); $allArticles = [$article1, $article2, $article3]; $users->Articles->unlink($user, $allArticles);
$article->get('articles') будет содержать только [$article4] после удаления в базе данных
Параметры
-
Cake\Datasource\EntityInterface$sourceEntity сущность, сохраненная в таблице источника для этой ассоциации
-
array$targetEntities список сущностей, сохраненных в целевой таблице для этой ассоциации
-
array<string, mixed>|bool$options optional список параметров, которые необходимо передать внутреннему вызову
delete. Если булево значение, оно будет использоваться как значение для параметра "cleanProperty".
Возвращает
voidИсключения
InvalidArgumentExceptionесли переданы несохраненные сущности или любая из них не имеет значения первичного ключа
updateAll() public
updateAll(array $fields, Cake\Database\ExpressionInterfaceClosure|array|string|null $conditions): int
Делегирует операцию обновления методу updateAll целевой таблицы
Параметры
-
array$fields Хэш поле => новое значение.
-
Cake\Database\ExpressionInterfaceClosure|array|string|null$conditions Условие, принимает всё, что может принимать Query::where().
Возвращает
intСм. также
Подробное описание свойства
$_bindingKey protected
Имя поля в таблице со стороны владельца, используемое для сопоставления с внешним ключом
Тип
array<string>|string|null$_cascadeCallbacks protected
Необходимо ли также вызывать обратные вызовы при каскадном удалении.
Тип
bool$_className protected
Имя класса объекта целевой таблицы
Тип
string$_conditions protected
Список условий, которые всегда должны включаться при извлечении записей из целевого объединения
Тип
Closure|array$_dependent protected
Зависимы ли записи в целевой таблице от исходной таблицы; часто используется для указания, что записи должны быть удалены, если владеющая запись в исходной таблице удалена.
Тип
bool$_finder protected
Имя используемого по умолчанию нахождения для извлечения строк из целевой таблицы. С массивом значения, имя нахождения и параметры по умолчанию разрешены.
Тип
array|string$_foreignKey protected
Имя поля, представляющего внешний ключ для загружаемой таблицы
Тип
array<string>|string$_joinType protected
Тип соединения, используемого при добавлении объединения в запрос
Тип
string$_name protected
Имя объединения; обычно представляет псевдоним, присвоенный целевой таблице объединения
Тип
string$_propertyName protected
Имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
Тип
string$_saveStrategy protected
Стратегия сохранения, которая будет использоваться этим объединением
Тип
string$_sort protected
Порядок, в котором должны возвращаться целевые записи
Тип
mixed$_sourceTable protected
Экземпляр исходной таблицы
Тип
Cake\ORM\Table$_strategy protected
Имя стратегии, которое будет использоваться для извлечения связанных записей.
Тип
string$_tableLocator protected
Экземпляр локатора таблицы
Тип
Cake\ORM\Locator\LocatorInterface|null$_targetTable protected
Экземпляр целевой таблицы
Тип
Cake\ORM\Table$_validStrategies protected
Допустимые стратегии для этого типа объединения
Тип
array<string>$defaultTable protected
Псевдоним таблицы по умолчанию для этого объекта.
Тип
string|null
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.ORM.Association.HasMany.html