Класс 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
string|string[]|nullИмя поля в таблице стороны владения, которое используется для сопоставления с foreignKey
- $_cascadeCallbacks protected
boolВызывать ли обратные вызовы при каскадном удалении.
- $_className protected
stringИмя класса объекта целевой таблицы.
- $_conditions protected
arrayClosureСписок условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.
- $_dependent protected
boolЗависят ли записи в целевой таблице от таблицы источника, часто используется для указания того, что записи должны быть удалены, если владеющая запись в таблице источника удалена.
- $_finder protected
string|arrayИмя по умолчанию для поиска строк из целевой таблицы. С массивом разрешены имя поиска и опции по умолчанию.
- $_foreignKey protected
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
string[]Действительные стратегии для этого типа ассоциации.
Краткое описание методов
-
__call() public
Делегирует вызовы методов целевой таблице.
-
__construct() public
Конструктор. Подклассы могут переопределять функцию _options, чтобы получить исходный список переданных параметров, если ожидается любой другой специальный ключ.
-
__get() public
Делегирует получение свойств целевой таблице. Это удобно для получения ассоциаций этой ассоциации.
-
__isset() public
Делегирует вызов isset целевой таблице. Это удобно для проверки наличия другой ассоциации целевой таблицы с заданным именем.
-
_appendFields() protected
Вспомогательная функция, используемая для условного добавления полей к фрагменту SELECT запроса из полей, найденных в другом объекте запроса.
-
_appendNotMatching() protected
Условно добавляет условие к переданному запросу, которое заставит его находить записи, где нет совпадения с этой ассоциацией.
-
_bindNewAssociations() protected
Применяет все присоединяемые ассоциации к
$queryиз контейнеров, найденных в запросе$surrogate. -
_camelize() protected
Создаёт версию $name с верблюжьей нотацией.
-
_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
Изменяет объект запроса, чтобы включить данные связанной целевой таблицы в окончательный результат.
-
canBeJoined() public
Можно ли выразить эту ассоциацию напрямую в соединении запроса.
-
cascadeDelete() public
Обрабатывает каскадное удаление из связанной модели.
-
defaultRowValue() public
Возвращает изменённую строку после добавления свойства для этой ассоциации со значением по умолчанию (пустое) в зависимости от того, была ли ассоциация присоединена или получена внешним образом.
-
deleteAll() public
Делегирует операцию удаления методу deleteAll целевой таблицы.
-
eagerLoader() public
Загружает жадно список записей в целевой таблице, связанных с другим набором записей в исходной таблице. Записи источника могут быть указаны двумя способами: во-первых, передав объект запроса, настроенный для поиска в исходной таблице, и, во-вторых, явно передав массив значений первичного ключа из исходной таблицы.
-
exists() public
Делегирует операцию целевой таблице exists после добавления стандартных условий для этой ассоциации.
-
find() public
Делегирует операцию поиска методу find целевой таблицы и соответственно изменяет запрос на основе конфигурации этой ассоциации.
-
getBindingKey() public
Получает имя поля, представляющего поле связи с целевой таблицей. Если не указано явно, используется первичный ключ таблицы владельца.
-
getCascadeCallbacks() public
Получает, будут ли срабатывать обратные вызовы при каскадном удалении.
-
getClassName() public
Получает имя класса объекта целевой таблицы.
-
getConditions() public
Получает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.
-
getDependent() public
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
-
получитьИскатель() public
Получает по умолчанию искатель для извлечения строк из целевой таблицы.
-
получитьВнешнийКлюч() public
Получает имя поля, представляющего внешний ключ к исходной таблице.
-
получитьТипСоединения() public
Получает тип соединения, который будет использоваться при добавлении ассоциации к запросу.
-
получитьИмя() public
Получает имя этой ассоциации, обычно псевдоним, присвоенный целевой связанной таблице
-
получитьСвойство() public
Получает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
-
получитьСтратегиюСохранения() public
Получает стратегию, которая должна использоваться для сохранения.
-
получитьСортировку() public
Получает порядок сортировки, в котором должны возвращаться целевые записи.
-
получитьИсточник() public
Получает экземпляр таблицы для стороны источника ассоциации.
-
получитьСтратегию() public
Получает имя стратегии, которая будет использоваться для извлечения связанных записей. Имейте в виду, что некоторые типы ассоциаций могут не реализовывать, но по умолчанию, что делает любые изменения в этом параметре недействительными.
-
получитьРаспознавательТаблицы() public
Получает распознаватель таблицы.
-
получитьЦель() public
Получает экземпляр таблицы для целевой стороны ассоциации.
-
являетсяЛиВладеющейСтороной() public
Возвращает значение true, если переданная таблица является владеющей стороной для этой ассоциации. Это означает, что строки в таблице «цель» могут потерять важную или необходимую информацию, если строка в «источнике» не существует.
-
связать() public
Связывает сущность источника с каждой из переданных целевых сущностей. При использовании этого метода все сущности в
$targetEntitiesбудут добавлены к свойству сущности источника, соответствующему этому объекту ассоциации. -
заменить() public
Заменяет существующие связи ассоциации между сущностью источника и целью на те, которые переданы. Этот метод выполняет интеллектуальную очистку, связи, которые уже сохранены и присутствуют в
$targetEntitiesне будут удалены, новые связи будут созданы для переданных целевых сущностей, которые еще не находятся в базе данных, а остальные будут удалены. -
требуетКлючи() public
Возвращает true, если процесс жадного загрузки потребует набор связывающих ключей таблицы владельца для использования их в качестве фильтра в запросе поиска.
-
сохранитьСвязанное() public
Берет сущность из исходной таблицы и проверяет, есть ли поле, соответствующее имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации, передав предоставленные
$options -
установитьСвязывающийКлюч() public
Устанавливает имя поля, представляющего связующее поле с целевой таблицей. Если не указано вручную, используется первичный ключ таблицы владеющей стороны.
-
установитьКаскадныеОбратныеВызовы() public
Устанавливает, должны ли также срабатывать каскадные удаления.
-
установитьИмяКласса() public
Устанавливает имя класса объекта целевой таблицы.
-
установитьУсловия() public
Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.
-
установитьЗависимость() public
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
-
установитьИскатель() public
Устанавливает по умолчанию искатель для извлечения строк из целевой таблицы.
-
установитьВнешнийКлюч() public
Устанавливает имя поля, представляющего внешний ключ к целевой таблице.
-
установитьТипСоединения() public
Устанавливает тип соединения, который будет использоваться при добавлении ассоциации к запросу.
-
установитьИмя() public
Устанавливает имя этой ассоциации, обычно псевдоним, присвоенный целевой связанной таблице
-
установитьСвойство() public
Устанавливает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.
-
установитьСтратегиюСохранения() public
Устанавливает стратегию, которая должна использоваться для сохранения.
-
установитьСортировку() public
Устанавливает порядок сортировки, в котором должны возвращаться целевые записи.
-
установитьИсточник() public
Устанавливает экземпляр таблицы для стороны источника ассоциации.
-
установитьСтратегию() public
Устанавливает имя стратегии, которая будет использоваться для извлечения связанных записей. Имейте в виду, что некоторые типы ассоциаций могут не реализовывать, но по умолчанию, что делает любые изменения в этом параметре недействительными.
-
установитьРаспознавательТаблицы() public
Устанавливает распознаватель таблицы.
-
установитьЦель() public
Устанавливает экземпляр таблицы для целевой стороны ассоциации.
-
преобразоватьСтроку() public
Правильно вложены значения связанной строки в правильные ключи массива внутри исходных результатов.
-
тип() public
Получить тип отношения.
-
отвязать() public
Удаляет все связи между переданной сущностью источника и каждой из переданных целевых сущностей. Этот метод предполагает, что все переданные объекты уже сохранены в базе данных и что каждый из них содержит значение первичного ключа.
-
обновитьВсе() public
Делегирует операцию обновления методу updateAll целевой таблицы
Краткое описание методов
__call() public
__call(string $method, array $argument): mixed
Перенаправляет вызовы методов на целевую таблицу.
Parameters
-
string$method имя вызываемого метода
-
array$argument Список аргументов, переданных в функцию
Returns
mixedThrows
BadMethodCallException__construct() public
__construct(string $alias, array $options = [])
Конструктор. Подклассы могут переопределить функцию _options, чтобы получить исходный список переданных параметров, если ожидается какой-либо другой специальный ключ
Parameters
-
string$alias Имя, данное ассоциации
-
array$options optional Список свойств, которые должны быть установлены для этого объекта
__get() public
__get(string $property): Cake\ORM\Association
Перенаправляет получение свойства на целевую таблицу. Это удобно для получения ассоциаций этой ассоциации
Parameters
-
string$property имя свойства
Returns
Cake\ORM\AssociationThrows
RuntimeExceptionесли ассоциация с таким именем не существует
__isset() public
__isset(string $property): bool
Перенаправляет вызов isset на целевую таблицу. Это удобно для проверки, есть ли у целевой таблицы другая ассоциация с переданным именем
Parameters
-
string$property имя свойства
Returns
bool_appendFields() protected
_appendFields(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array $options): void
Вспомогательная функция, используемая для условного добавления полей к предложению select запроса из полей, найденных в другом объекте запроса.
Parameters
-
Cake\ORM\Query$query запрос, к которому будут добавлены поля
-
Cake\ORM\Query$surrogate запрос, содержащий поля, которые нужно скопировать
-
array$options параметры, переданные методу
attachTo
Returns
void_appendNotMatching() protected
_appendNotMatching(Cake\ORM\Query $query, array $options): void
Условно добавляет условие к переданному запросу Query, которое позволит ему находить записи, где нет соответствия с этой ассоциацией.
Parameters
-
Cake\ORM\Query$query Запрос для изменения
-
array$options Массив параметров, содержащий ключ
negateMatch.
Returns
void_bindNewAssociations() protected
_bindNewAssociations(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array $options): void
Применяет все прикрепляемые ассоциации к $query из содержащихся элементов, найденных в запросе $surrogate.
Копирует все содержащиеся ассоциации из запроса $surrogate в переданный $query. Содержащиеся элементы изменяются так, чтобы они соответствовали цепочке ассоциаций, из которой они произошли.
Parameters
-
Cake\ORM\Query$query запрос, к которому будут прикреплены ассоциации
-
Cake\ORM\Query$surrogate запрос, содержащий элементы, которые нужно прикрепить
-
array$options параметры, переданные методу
attachTo
Returns
void_camelize() protected
_camelize(string $name): string
Создает версию $name в стиле camelCase
Parameters
-
string$name имя
Returns
string_dispatchBeforeFind() protected
_dispatchBeforeFind(Cake\ORM\Query $query): void
Вызывает beforeFind в целевой таблице для запроса, к которому прикрепляется эта ассоциация
Parameters
-
Cake\ORM\Query$query запрос, к которому прикрепляется эта ассоциация
Returns
void_entityName() protected
_entityName(string $name): string
Создает правильное имя сущности (единственное число) для указанного имени
Parameters
-
string$name Имя
Returns
string_extractFinder() protected
_extractFinder(string|array $finderData): array
Вспомогательный метод для вывода запрошенного findera и его параметров.
Возвращает выведенные параметры из findera $type.
Examples:
Следующий код вызовет finder 'translations' со значением findera в качестве его параметров: $query->contain(['Comments' => ['finder' => ['translations']]]); $query->contain(['Comments' => ['finder' => ['translations' => []]]]); $query->contain(['Comments' => ['finder' => ['translations' => ['locales' => ['en_US']]]]]);
Parameters
-
string|array$finderData Имя findera или массив, содержащий имя в качестве ключа и параметры в качестве значения.
Returns
array_fixtureName() protected
_fixtureName(string $name): string
Создает имя фикстуры
Parameters
-
string$name Имя класса модели
Returns
string_foreignKeyAcceptsNull() protected
_foreignKeyAcceptsNull(Cake\ORM\Table $table, array $properties): bool
Проверяет флаг NULL внешнего ключа
Parameters
-
Cake\ORM\Table$table таблица, содержащая внешний ключ
-
array$properties список полей, составляющих внешний ключ
Returns
bool_formatAssociationResults() protected
_formatAssociationResults(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array $options): void
Добавляет функцию форматирования к переданному $query, если запрос $surrogate объявляет какой-либо другой форматтер. Поскольку запрос $surrogate соответствует связанной целевой таблице, результирующий форматтер будет результатом применения суррогатных форматтеров только к свойству, соответствующему такой таблице.
Parameters
-
Cake\ORM\Query$query запрос, к которому будет применена функция форматирования
-
Cake\ORM\Query$surrogate запрос, содержащий форматтеры для связанной целевой таблицы.
-
array$options параметры, переданные методу
attachTo
Returns
void_joinCondition() protected
_joinCondition(array $options): array
Возвращает одно или несколько условий, которые должны быть добавлены к сгенерированному предложению join для получения результатов в целевой таблице.
Parameters
-
array$options список параметров, переданных методу attachTo
Returns
arrayThrows
RuntimeExceptionесли количество столбцов во внешнем ключе не совпадает с количеством столбцов в первичном ключе исходной таблицы
_modelKey() protected
_modelKey(string $name): string
Создает правильный подчеркнутый ключ модели для ассоциаций
Если входные данные содержат точку, предполагается, что правая часть является реальным именем таблицы.
Parameters
-
string$name Имя класса модели
Returns
string_modelNameFromKey() protected
_modelNameFromKey(string $key): string
Создаёт правильное имя модели из внешнего ключа
Параметры
-
string$key Внешний ключ
Возвращает
string_options() protected
_options(array $options): void
Обрабатывает дополнительные параметры, переданные в конструктор.
Параметры
-
array$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 $options): bool
Сохраняет каждый из сущностей в целевую таблицу и создаёт связи между родительской сущностью и каждой из сохранённых целевых сущностей.
Параметры
-
array$foreignKeyReference Ссылка на внешний ключ, определяющая связь между целевой сущностью и родительской сущностью.
-
Cake\Datasource\EntityInterface$parentEntity Исходная сущность, содержащая целевые сущности для сохранения.
-
array$entities Список сущностей для сохранения в целевой таблице и создания связи с родительской сущностью.
-
array$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 $options = []): bool
Удаляет или устанавливает в null связанные объекты, соответствующие условиям $conditions.
Выполняемое действие зависит от зависимости между источником и целевыми объектами, а также от возможности значения NULL внешнего ключа.
Параметры
-
array$foreignKey массив свойств внешнего ключа
-
Cake\ORM\Table$target Связанная таблица
-
array$conditions optional Условия, определяющие, какие объекты должны быть разорваны
-
array$options optional Список параметров, принимаемых методом
Table::delete()
Возвращает
bool_unlinkAssociated() protected
_unlinkAssociated(array $foreignKeyReference, Cake\Datasource\EntityInterface $entity, Cake\ORM\Table $target, iterable $remainingEntities = [], array $options = []): bool
Удаляет или устанавливает в null связанные объекты в соответствии с зависимостью между источником и целевыми объектами и возможностью значения NULL внешнего ключа. Пропускает удаление записей, присутствующих в $remainingEntities
Параметры
-
array$foreignKeyReference Ссылка на внешний ключ, определяющая связь между целевой сущностью и родительской сущностью.
-
Cake\Datasource\EntityInterface$entity Сущность, у которой должны быть отвязаны связанные сущности.
-
Cake\ORM\Table$target Связанная таблица
-
iterable$remainingEntities optional Сущности, которые не должны быть удалены
-
array$options optional Список параметров, принимаемых методом
Table::delete()
Возвращает
bool_variableName() protected
_variableName(string $name): string
Создаёт множественное имя переменной для представлений.
Параметры
-
string$name Используемое имя
Возвращает
stringattachTo() public
attachTo(Cake\ORM\Query $query, array $options = []): void
Изменяет объект запроса, чтобы включить данные связанной целевой таблицы в окончательный результат.
Массив параметров принимает следующие ключи:
- includeFields: Включать ли поля целевой модели в результат?
- foreignKey: Имя поля для использования в качестве внешнего ключа (если false, не использовать)
- conditions: Массив с условиями для фильтрации объединения, который будет объединён с любыми исходно настроенными условиями для этой ассоциации.
- fields: Список полей в целевой таблице, которые нужно включить в результат.
- type: Тип объединения (например, INNER) для записей, найденных по этой ассоциации.
- aliasPath: Строка, разделённая точками, представляющая путь имён ассоциаций, следующих от основной таблицы переданного запроса к этой ассоциации.
- propertyPath: Строка, разделённая точками, представляющая путь свойств ассоциации, которые нужно следовать от основной сущности переданного запроса к этой ассоциации.
- joinType: Тип SQL-объединения, используемого в запросе.
- negateMatch: Добавит условие в переданный запрос для исключения совпадений по этой ассоциации.
Параметры
-
Cake\ORM\Query$query Запрос, который нужно изменить, чтобы включить данные целевой таблицы
-
array$options optional Любые дополнительные параметры или переопределения, которые нужно учитывать
Возвращает
voidВыбрасывает
RuntimeExceptionесли переданный билдер запросов не возвращает объект запроса
canBeJoined() public
canBeJoined(array $options = []): bool
Можно ли эту ассоциацию выразить непосредственно в объединении запроса?
Параметры
-
array$options optional настраиваемые параметры ключа, которые могут изменить возвращаемое значение
Возвращает
boolcascadeDelete() public
cascadeDelete(Cake\Datasource\EntityInterface $entity, array $options = []): bool
Обрабатывает каскадное удаление из связанной модели.
Каждый реализующий класс должен обрабатывать каскадное удаление в соответствии с требованиями.
Параметры
-
Cake\Datasource\EntityInterface$entity -
array$options optional
Возвращает
booldefaultRowValue() public
defaultRowValue(array $row, bool $joined): array
Возвращает изменённую строку после добавления свойства для этой ассоциации со значением по умолчанию в соответствии с тем, была ли ассоциация объединена или загружена внешне.
Параметры
-
array$row -
bool$joined
Возвращает
arraydeleteAll() public
deleteAll(mixed $conditions): int
Перенаправляет операцию удаления на метод deleteAll целевой таблицы
Parameters
-
mixed$conditions Условия, которые будут использоваться, принимает все, что может принимать Query::where().
Returns
intSee Also
eagerLoader() public
eagerLoader(array $options): Closure
Загружает список записей в целевой таблице, которые связаны с другим набором записей в исходной таблице. Исходные записи могут быть указаны двумя способами: первый - передача объекта Query, настроенного для поиска в исходной таблице, а второй - явная передача массива значений первичных ключей из исходной таблицы.
Требуемый способ передачи связанных исходных записей контролируется параметром "strategy". Когда используется стратегия подзапроса, потребуется запрос к исходной таблице. При использовании стратегии выбора будет использоваться список первичных ключей.
Возвращает замыкание, которое должно быть выполнено для каждой записи, возвращенной в определенном запросе Query. Это вызываемое средство будет отвечать за вставку полей, связанных с каждой конкретной переданной строкой.
Массив options принимает следующие ключи:
- query: Объект Query, настроенный для поиска записей в исходной таблице
- keys: Список значений первичных ключей из исходной таблицы
- foreignKey: Имя поля, используемого для связи обеих таблиц
- conditions: Список условий, которые должны быть переданы методу where() запроса
- sort: Направление, в котором должны быть возвращены записи
- fields: Список полей для выбора из целевой таблицы
- contain: Список связанных таблиц для загрузки связанных с целевой таблицей
- strategy: Имя стратегии, которая должна использоваться для поиска записей целевой таблицы
- nestKey: Ключ массива, под которым будут найдены результаты при преобразовании строки
Parameters
-
array$options
Returns
Closureexists() public
exists(arrayClosureCake\Database\ExpressionInterface $conditions): bool
Перенаправляет операцию в метод exists целевой таблицы после добавления условий по умолчанию для этой связи
Parameters
-
arrayClosureCake\Database\ExpressionInterface$conditions Условия, которые будут использоваться для проверки соответствия какой-либо записи.
Returns
boolSee Also
find() public
find(string|array|null $type = null, array $options = []): Cake\ORM\Query
Перенаправляет операцию поиска в метод find целевой таблицы и соответствующим образом изменяет запрос на основе конфигурации этой связи
Parameters
-
string|array|null$type optional тип запроса для выполнения, если передан массив, он будет интерпретироваться как параметр
$options-
array$options optional Параметры для поиска
Returns
Cake\ORM\QuerySee Also
getBindingKey() public
getBindingKey(): string|string[]
Возвращает имя поля, представляющего поле связывания с целевой таблицей. Если не указано вручную, используется первичный ключ таблицы владельца.
Returns
string|string[]getCascadeCallbacks() public
getCascadeCallbacks(): bool
Возвращает, следует ли также запускать обратные вызовы при каскадных удалениях.
Returns
boolgetClassName() public
getClassName(): string
Возвращает имя класса объекта целевой таблицы.
Returns
stringgetConditions() public
getConditions(): arrayClosure
Возвращает список условий, которые всегда должны включаться при извлечении записей из целевой связи.
Returns
arrayClosureSee Also
getDependent() public
getDependent(): bool
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
Это в основном используется для указания того, что записи должны быть удалены, если владеющая запись в исходной таблице удалена.
Returns
boolgetFinder() public
getFinder(): string|array
Возвращает средство поиска по умолчанию для извлечения строк из целевой таблицы.
Returns
string|arraygetForeignKey() public
getForeignKey(): string|string[]
Возвращает имя поля, представляющего внешний ключ к исходной таблице.
Returns
string|string[]getJoinType() 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
Возвращает, является ли переданная таблица владеющей стороной для этой связи. Это означает, что строки в таблице «цель» будут пропускать важную или необходимую информацию, если строка в «источнике» не существует.
Parameters
-
Cake\ORM\Table$side Потенциальная таблица с правом собственности
Returns
boollink() public
link(Cake\Datasource\EntityInterface $sourceEntity, array $targetEntities, array $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$options необязательно список параметров, передаваемых внутреннему вызову
save
Возвращает
boolreplace() public
replace(Cake\Datasource\EntityInterface $sourceEntity, array $targetEntities, array $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$options необязательно список параметров, которые будут переданы внутренним вызовам
save/deleteпри сохранении/обновлении новых связей или удалении существующих
Возвращает
boolИсключения
InvalidArgumentExceptionесли переданы несохранённые сущности или если у какой-либо из них отсутствует значение первичного ключа
requiresKeys() public
requiresKeys(array $options = []): bool
Возвращает true, если процесс жадного загрузки потребует набор связующих ключей таблицы владельца, чтобы использовать их в качестве фильтра в запросе нахождения.
Параметры
-
array$options необязательно Параметры, содержащие используемую стратегию.
Возвращает
boolsaveAssociated() public
saveAssociated(Cake\Datasource\EntityInterface $entity, array $options = []): Cake\Datasource\EntityInterface|false
Принимает сущность из исходной таблицы и проверяет, существует ли поле, соответствующее имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации путём передачи предоставленных $options
Параметры
-
Cake\Datasource\EntityInterface$entity сущность из исходной таблицы
-
array$options необязательно параметры, передаваемые методу сохранения в целевой таблице
Возвращает
Cake\Datasource\EntityInterface|falseИсключения
InvalidArgumentExceptionпри невозможности обхода данных ассоциации.
См. также
setBindingKey() public
setBindingKey(string|string[] $key): $this
Устанавливает имя поля, представляющего связывающее поле с целевой таблицей. Если не указано вручную, используется первичный ключ таблицы владельца.
Параметры
-
string|string[]$key поле или поля таблицы, используемые для связи обеих таблиц
Возвращает
$thissetCascadeCallbacks() public
setCascadeCallbacks(bool $cascadeCallbacks): $this
Устанавливает, должны ли вызываться обратные вызовы при каскадных удалениях.
Параметры
-
bool$cascadeCallbacks значение переключателя каскадных обратных вызовов
Возвращает
$thissetClassName() public
setClassName(string $className): $this
Устанавливает имя класса целевой таблицы.
Параметры
-
string$className Имя класса для установки.
Возвращает
$thisИсключения
InvalidArgumentExceptionВ случае, если имя класса установлено после определения целевой таблицы, и оно не соответствует имени класса целевой таблицы.
setConditions() public
setConditions(arrayClosure $conditions): Cake\ORM\Association
Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.
Параметры
-
arrayClosure$conditions список используемых условий
Возвращает
Cake\ORM\AssociationСм. также
setDependent() public
setDependent(bool $dependent): $this
Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.
Это в первую очередь используется для указания того, что записи должны быть удалены, если владеющая запись в исходной таблице удалена.
Если параметры не переданы, возвращается текущее значение.
Параметры
-
bool$dependent Установить режим зависимости. Используйте null для чтения текущего состояния.
Возвращает
$thissetFinder() public
setFinder(string|array $finder): $this
Устанавливает используемый по умолчанию поиск для извлечения строк из целевой таблицы.
Параметры
-
string|array$finder имя используемого поиска или массив имени поиска и опции.
Возвращает
$thissetForeignKey() public
setForeignKey(string|string[] $key): $this
Устанавливает имя поля, представляющего внешний ключ к целевой таблице.
Параметры
-
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|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|bool$options optional список параметров, которые будут переданы в вызов
delete. Если булево, он будет использоваться в качестве значения для опции "cleanProperty".
Возвращает
voidВызывает исключение
InvalidArgumentExceptionесли переданы несохраненные сущности или если какой-либо из них не имеет значения первичного ключа
updateAll() public
updateAll(array $fields, mixed $conditions): int
Делегирует операцию обновления методу updateAll целевой таблицы
Параметры
-
array$fields Хэш поля => новое значение.
-
mixed$conditions Условие, принимает все, что может принять Query::where().
Возвращает
intСм. также
Подробное описание свойства
$_bindingKey protected
Имя поля в таблице владельца, используемое для сопоставления с foreignKey
Тип
string|string[]|null$_cascadeCallbacks protected
Вызывать ли обратные вызовы при каскадном удалении.
Тип
bool$_className protected
Имя класса объекта целевой таблицы
Тип
string$_conditions protected
Список условий, которые всегда включаются при извлечении записей из целевой ассоциации
Тип
arrayClosure$_dependent protected
Зависит ли запись в целевой таблице от записи в исходной таблице, часто используется для указания, что записи должны быть удалены, если запись владельца в исходной таблице удалена.
Тип
bool$_finder protected
Имя используемого по умолчанию findera для извлечения строк из целевой таблицы. С массивом разрешены имя findera и значения по умолчанию.
Тип
string|array$_foreignKey protected
Имя поля, представляющего внешний ключ для таблицы для загрузки
Тип
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
Допустимые стратегии для этого типа ассоциации
Тип
string[]
© 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.2/class-Cake.ORM.Association.HasMany.html