Класс 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Вызывает исключение
RuntimeExceptionif no association with such name exists
__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
Условно добавляет условие к переданному запросу, которое позволит ему находить записи, где нет совпадения с этой ассоциацией.
Параметры
-
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
Проверяет флаг NULL внешнего ключа
Параметры
-
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Вызывает исключение
RuntimeExceptionif the number of columns in the foreignKey do not match the number of columns in the source table primaryKey
_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 $row, bool $joined): array
Возвращает изменённую строку после добавления свойства для этой ассоциации с пустым значением по умолчанию в зависимости от того, была ли ассоциация присоединена или получена внешним образом.
Параметры
-
array$row -
bool$joined
Возвращает
arraydeleteAll() public
deleteAll(Cake\Database\ExpressionInterfaceClosure|array|string|null $conditions): int
Делегирует операцию удаления методу deleteAll целевой таблицы
Параметры
-
Cake\Database\ExpressionInterfaceClosure|array|string|null$conditions Условия, которые будут использованы, принимает всё, что может принять Query::where().
Возвращает
intСм. также
eagerLoader() public
eagerLoader(array<string, mixed> $options): Closure
Загружает список записей в целевой таблице, связанных с другим набором записей в исходной таблице. Исходные записи могут быть указаны двумя способами: во-первых, передав объект Query, настроенный для поиска в исходной таблице, а во-вторых, явно передав массив значений первичных ключей из исходной таблицы.
Требуемый способ передачи связанных исходных записей контролируется параметром "стратегия". При использовании стратегии подзапроса потребуется запрос к исходной таблице. При использовании стратегии выбора будет использован список первичных ключей.
Возвращает замыкание, которое должно быть выполнено для каждой записи, возвращаемой в определённом запросе. Это вызываемая функция будет отвечать за внедрение полей, связанных с каждой конкретной переданной строкой.
Массив опций принимает следующие ключи:
- query: Объект Query, настроенный для поиска записей исходной таблицы
- keys: Список значений первичных ключей из исходной таблицы
- foreignKey: Название поля, используемого для связывания обеих таблиц
- conditions: Список условий, которые должны быть переданы методу query where()
- sort: Направление, в котором должны быть возвращены записи
- fields: Список полей для выбора из целевой таблицы
- contain: Список связанных таблиц, которые нужно загрузить вместе с целевой таблицей
- strategy: Название стратегии, которая должна быть использована для поиска записей целевой таблицы
- nestKey: Ключ массива, под которым результаты будут найдены при преобразовании строки
Параметры
-
array<string, mixed>$options
Возвращает
Closureexists() public
exists(Cake\Database\ExpressionInterfaceClosure|array|string|null $conditions): bool
Делегирует операцию методу exists целевой таблицы после добавления стандартных условий для этой ассоциации
Параметры
-
Cake\Database\ExpressionInterfaceClosure|array|string|null$conditions Условия, используемые для проверки соответствия записям.
Возвращает
boolСм. также
fetchTable() public
fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table
Удобный метод для получения экземпляра таблицы.
Параметры
-
string|null$alias optional Имя псевдонима, которое нужно получить. Должно быть в формате CamelCase. Если
null, то используется значение свойства $defaultTable.-
array<string, mixed>$options optional Опции, с которыми нужно построить таблицу. Если таблица уже загружена, опции реестра будут проигнорированы.
Возвращает
Cake\ORM\TableИсключения
Cake\Core\Exception\CakeExceptionЕсли аргумент `$alias` и свойство `$defaultTable` оба равны `null`.
См. также
find() public
find(array<string, mixed>|string|null $type = null, array<string, mixed> $options = []): Cake\ORM\Query
Делегирует операцию поиска методу find целевой таблицы и изменяет запрос соответственно конфигурации этой ассоциации.
Параметры
-
array<string, mixed>|string|null$type optional Тип запроса, который нужно выполнить, если передан массив, он будет интерпретирован как параметр
$options-
array<string, mixed>$options optional Опции для поиска.
Возвращает
Cake\ORM\QueryСм. также
getBindingKey() public
getBindingKey(): array<string>|string
Получает имя поля, представляющего поле связывания с целевой таблицей. Если не указано вручную, используется первичный ключ таблицы-владельца.
Возвращает
array<string>|stringgetCascadeCallbacks() public
getCascadeCallbacks(): bool
Получает, должны ли срабатывать каскадные удаления с вызовом обратных вызовов.
Возвращает
boolgetClassName() public
getClassName(): string
Получает имя класса объекта целевой таблицы.
Возвращает
stringgetConditions() public
getConditions(): Closure|array
Получает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.
Возвращает
Closure|arrayСм. также
getDependent() public
getDependent(): bool
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
Это используется в основном для указания того, что записи должны быть удалены, если владеющая запись в исходной таблице удалена.
Возвращает
boolgetFinder() public
getFinder(): array|string
Получает стандартный поиск для извлечения строк из целевой таблицы.
Возвращает
array|stringgetForeignKey() public
getForeignKey(): array<string>|string
Получает имя поля, представляющего внешний ключ к исходной таблице.
Возвращает
array<string>|stringgetJoinType() public
getJoinType(): string
Получает тип соединения, который нужно использовать при добавлении ассоциации в запрос.
Возвращает
stringgetName() public
getName(): string
Получает имя для этой ассоциации, обычно псевдоним, назначенный целевой связанной таблице
Возвращает
stringgetProperty() public
getProperty(): string
Получает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
Возвращает
stringgetSaveStrategy() public
getSaveStrategy(): string
Получает стратегию, которая должна быть использована для сохранения.
Возвращает
stringgetSort() public
getSort(): mixed
Получает порядок сортировки, в котором должны быть возвращены целевые записи.
Возвращает
mixedgetSource() public
getSource(): Cake\ORM\Table
Получает экземпляр таблицы для исходной стороны ассоциации.
Возвращает
Cake\ORM\TablegetStrategy() public
getStrategy(): string
Получает имя стратегии, которое нужно использовать для извлечения связанных записей. Имейте в виду, что некоторые типы ассоциаций могут не реализовывать, но использовать по умолчанию стратегию, делая любые изменения в этом параметре недействительными.
Возвращает
stringgetTableLocator() public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Получает локатор таблиц.
Возвращает
Cake\ORM\Locator\LocatorInterfacegetTarget() public
getTarget(): Cake\ORM\Table
Получает экземпляр таблицы для целевой стороны ассоциации.
Возвращает
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.3/class-Cake.ORM.Association.HasMany.html