Spec-Zone.ru › CakePHP 4.3

Класс HasMany

Представляет отношение N - 1, где целевая сторона отношения будет иметь один или несколько записей на каждую запись в исходной стороне.

Пример ассоциации HasMany — Автор имеет много Статей.

Пространство имён: Cake\ORM\Association

Постоянные значения

  • string
    MANY_TO_MANY
    'manyToMany'

    Тип ассоциации для многих ко многим ассоциаций.

  • string
    MANY_TO_ONE
    'manyToOne'

    Тип ассоциации для многих к одному ассоциациям.

  • string
    ONE_TO_MANY
    'oneToMany'

    Тип ассоциации для одного ко многим ассоциациям.

  • string
    ONE_TO_ONE
    'oneToOne'

    Тип ассоциации для одного к одному ассоциациям.

  • string
    SAVE_APPEND
    'append'

    Стратегия сохранения, которая добавит только в существующий набор ссылок.

  • string
    SAVE_REPLACE
    'replace'

    Стратегия сохранения, которая заменит существующие ссылки предоставленным набором.

  • string
    STRATEGY_JOIN
    'join'

    Имя стратегии для использования соединений при получении связанных записей.

  • string
    STRATEGY_SELECT
    'select'

    Имя стратегии для использования запроса SELECT при получении связанных записей.

  • string
    STRATEGY_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

    Псевдоним таблицы по умолчанию для этого объекта.

END_OF_DOCUMENT_MARKER

Краткое описание методов

  • __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
if 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

Вызывает исключение

RuntimeException
if 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

Используемое имя

Возвращает

string

attachTo() 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

дополнительные параметры, которые могут повлиять на результат

Возвращает

bool

cascadeDelete() public

cascadeDelete(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool

Обрабатывает каскадное удаление из связанной модели.

Каждый реализуемый класс должен обрабатывать каскадное удаление, как требуется.

Параметры

Cake\Datasource\EntityInterface $entity
array<string, mixed> $options optional

Возвращает

bool

defaultRowValue() public

defaultRowValue(array $row, bool $joined): array

Возвращает изменённую строку после добавления свойства для этой ассоциации с пустым значением по умолчанию в зависимости от того, была ли ассоциация присоединена или получена внешним образом.

Параметры

array $row
bool $joined

Возвращает

array

deleteAll() public

deleteAll(Cake\Database\ExpressionInterfaceClosure|array|string|null $conditions): int

Делегирует операцию удаления методу deleteAll целевой таблицы

Параметры

Cake\Database\ExpressionInterfaceClosure|array|string|null $conditions

Условия, которые будут использованы, принимает всё, что может принять Query::where().

Возвращает

int

См. также

\Cake\ORM\Table::deleteAll()

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

Возвращает

Closure

exists() public

exists(Cake\Database\ExpressionInterfaceClosure|array|string|null $conditions): bool

Делегирует операцию методу exists целевой таблицы после добавления стандартных условий для этой ассоциации

Параметры

Cake\Database\ExpressionInterfaceClosure|array|string|null $conditions

Условия, используемые для проверки соответствия записям.

Возвращает

bool

См. также

\Cake\ORM\Table::exists()

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`.

См. также

\Cake\ORM\TableLocator::get()

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

См. также

\Cake\ORM\Table::find()

getBindingKey() public

getBindingKey(): array<string>|string

Получает имя поля, представляющего поле связывания с целевой таблицей. Если не указано вручную, используется первичный ключ таблицы-владельца.

Возвращает

array<string>|string

getCascadeCallbacks() public

getCascadeCallbacks(): bool

Получает, должны ли срабатывать каскадные удаления с вызовом обратных вызовов.

Возвращает

bool

getClassName() public

getClassName(): string

Получает имя класса объекта целевой таблицы.

Возвращает

string

getConditions() public

getConditions(): Closure|array

Получает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.

Возвращает

Closure|array

См. также

\Cake\Database\Query::where() для примеров формата массива

getDependent() public

getDependent(): bool

Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.

Это используется в основном для указания того, что записи должны быть удалены, если владеющая запись в исходной таблице удалена.

Возвращает

bool

getFinder() public

getFinder(): array|string

Получает стандартный поиск для извлечения строк из целевой таблицы.

Возвращает

array|string

getForeignKey() public

getForeignKey(): array<string>|string

Получает имя поля, представляющего внешний ключ к исходной таблице.

Возвращает

array<string>|string

getJoinType() public

getJoinType(): string

Получает тип соединения, который нужно использовать при добавлении ассоциации в запрос.

Возвращает

string

getName() public

getName(): string

Получает имя для этой ассоциации, обычно псевдоним, назначенный целевой связанной таблице

Возвращает

string

getProperty() public

getProperty(): string

Получает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.

Возвращает

string

getSaveStrategy() public

getSaveStrategy(): string

Получает стратегию, которая должна быть использована для сохранения.

Возвращает

string

getSort() public

getSort(): mixed

Получает порядок сортировки, в котором должны быть возвращены целевые записи.

Возвращает

mixed

getSource() public

getSource(): Cake\ORM\Table

Получает экземпляр таблицы для исходной стороны ассоциации.

Возвращает

Cake\ORM\Table

getStrategy() public

getStrategy(): string

Получает имя стратегии, которое нужно использовать для извлечения связанных записей. Имейте в виду, что некоторые типы ассоциаций могут не реализовывать, но использовать по умолчанию стратегию, делая любые изменения в этом параметре недействительными.

Возвращает

string

getTableLocator() public

getTableLocator(): Cake\ORM\Locator\LocatorInterface

Получает локатор таблиц.

Возвращает

Cake\ORM\Locator\LocatorInterface

getTarget() public

getTarget(): Cake\ORM\Table

Получает экземпляр таблицы для целевой стороны ассоциации.

Возвращает

Cake\ORM\Table

isOwningSide() public

isOwningSide(Cake\ORM\Table $side): bool

Возвращает значение, указывающее, является ли переданная таблица стороной владения для этого ассоциации. Это означает, что строки в таблице 'target' будут содержать неполную или необходимую информацию, если строка в 'source' не существует.

Параметры

Cake\ORM\Table $side

Возможная таблица с владением

Возвращает

bool

link() 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

Возвращает

bool

replace() 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

Параметры, содержащие используемую стратегию.

Возвращает

bool

saveAssociated() 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
когда данные ассоциации не могут быть обработаны.

См. также

\Cake\ORM\Table::save()

setBindingKey() public

setBindingKey(array<string>|string $key): $this

Устанавливает имя поля, представляющего поле привязки к целевой таблице. Если не указано явно, используется первичный ключ таблицы владения.

Параметры

array<string>|string $key

поле или поля таблицы, которые будут использоваться для связи обеих таблиц

Возвращает

$this

setCascadeCallbacks() public

setCascadeCallbacks(bool $cascadeCallbacks): $this

Устанавливает, должны ли также срабатывать обратные вызовы при каскадном удалении.

Параметры

bool $cascadeCallbacks

значение переключателя каскадных обратных вызовов

Возвращает

$this

setClassName() public

setClassName(string $className): $this

Устанавливает имя класса объекта целевой таблицы.

Параметры

string $className

Имя класса для установки.

Возвращает

$this

Исключения

InvalidArgumentException
В случае, если имя класса установлено после разрешения целевой таблицы, и оно не соответствует имени класса целевой таблицы.

setConditions() public

setConditions(Closure|array $conditions): $this

Устанавливает список условий, которые всегда должны включаться при извлечении записей из целевой ассоциации.

Параметры

Closure|array $conditions

список условий для использования

Возвращает

$this

См. также

\Cake\Database\Query::where() для примеров формата массива

setDependent() public

setDependent(bool $dependent): $this

Устанавливает, зависят ли записи в целевой таблице от исходной таблицы.

Это используется в основном для указания, что записи должны быть удалены, если запись-владелец в исходной таблице удаляется.

Если параметры не переданы, возвращается текущее значение.

Параметры

bool $dependent

Установить зависимый режим. Используйте null для чтения текущего состояния.

Возвращает

$this

setFinder() public

setFinder(array|string $finder): $this

Устанавливает используемый по умолчанию поиск для извлечения строк из целевой таблицы.

Параметры

array|string $finder

имя используемого поиска или массив из имени поиска и параметра.

Возвращает

$this

setForeignKey() public

setForeignKey(array<string>|string $key): $this

Устанавливает имя поля, представляющего внешний ключ к целевой таблице.

Параметры

array<string>|string $key

ключ или ключи, которые будут использоваться для связи обеих таблиц

Возвращает

$this

setJoinType() public

setJoinType(string $type): $this

Устанавливает тип соединения, который будет использоваться при добавлении ассоциации в запрос.

Параметры

string $type

тип соединения (например, INNER)

Возвращает

$this

setName() public

setName(string $name): $this

Устанавливает имя для этой ассоциации, обычно псевдоним, назначенный целевой таблице-ассоциации

Параметры

string $name

Назначаемое имя

Возвращает

$this

setProperty() public

setProperty(string $name): $this

Устанавливает имя свойства, которое должно быть заполнено данными из целевой таблицы в записи исходной таблицы.

Параметры

string $name

Имя свойства ассоциации. Используйте null для чтения текущего значения.

Возвращает

$this

setSaveStrategy() public

setSaveStrategy(string $strategy): $this

Устанавливает стратегию, которая должна использоваться для сохранения.

Параметры

string $strategy

имя используемой стратегии

Возвращает

$this

Исключения

InvalidArgumentException
если передано недопустимое имя стратегии

setSort() public

setSort(mixed $sort): $this

Устанавливает порядок сортировки, в котором должны возвращаться записи целевой таблицы.

Параметры

mixed $sort

Оператор сортировки, совместимый с find()

Возвращает

$this

setSource() public

setSource(Cake\ORM\Table $table): $this

Устанавливает экземпляр таблицы для стороны источника ассоциации.

Параметры

Cake\ORM\Table $table

экземпляр, который необходимо назначить как сторону источника

Возвращает

$this

setStrategy() 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.

Возвращает

$this

setTarget() public

setTarget(Cake\ORM\Table $table): $this

Устанавливает экземпляр таблицы для стороны назначения ассоциации.

Параметры

Cake\ORM\Table $table

экземпляр, который необходимо назначить как сторону назначения

Возвращает

$this

transformRow() public

transformRow(array $row, string $nestKey, bool $joined, string|null $targetProperty = null): array

Правильно вкладывает значения результата строки, связанные с ассоциацией, в правильные ключи массива внутри исходных результатов.

Параметры

array $row

Строка для преобразования

string $nestKey

Ключ массива, в котором должны находиться результаты этой ассоциации

bool $joined

Является ли строка результатом прямого объединения с этой ассоциацией

string|null $targetProperty optional

Имя свойства в исходных результатах, где данные ассоциации должны быть вложены. Будет использоваться значение по умолчанию, если не указано.

Возвращает

array

type() public

type(): string

Получить тип отношения.

Возвращает

string

unlink() 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

См. также

\Cake\ORM\Table::updateAll()

Подробное описание свойства

$_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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API