Spec-Zone.ru › CakePHP 4.4

Класс 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
если ассоциация с таким именем не существует

__isset() public

__isset(string $property): bool

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

Параметры

string $property

имя свойства

Возвращает

bool

_appendFields() protected

_appendFields(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array<string, mixed> $options): void

Вспомогательная функция, используемая для условного добавления полей в предложение select запроса из полей, найденных в другом объекте запроса.

Параметры

Cake\ORM\Query $query

запрос, к которому будут добавлены поля

Cake\ORM\Query $surrogate

запрос, содержащий поля, которые нужно скопировать

array<string, mixed> $options

параметры, переданные методу attachTo

Возвращает

void

_appendNotMatching() protected

_appendNotMatching(Cake\ORM\Query $query, array<string, mixed> $options): void

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

Параметры

Cake\ORM\Query $query

Запрос для изменения

array<string, mixed> $options

Массив параметров, содержащий ключ negateMatch.

Возвращает

void

_bindNewAssociations() protected

_bindNewAssociations(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array<string, mixed> $options): void

Применяет все подключаемые ассоциации к $query из содержащихся элементов, найденных в запросе $surrogate.

Копирует все содержащиеся ассоциации из запроса $surrogate в переданный $query. Содержащиеся элементы изменяются таким образом, чтобы они соответствовали цепочке ассоциаций, из которой они произошли.

Параметры

Cake\ORM\Query $query

запрос, к которому будут прикреплены ассоциации

Cake\ORM\Query $surrogate

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

array<string, mixed> $options

параметры, переданные методу attachTo

Возвращает

void

_camelize() protected

_camelize(string $name): string

Создает версию $name в стиле camelCase

Параметры

string $name

имя

Возвращает

string

_dispatchBeforeFind() protected

_dispatchBeforeFind(Cake\ORM\Query $query): void

Вызывает beforeFind в целевой таблице для запроса, к которому подключается эта ассоциация

Параметры

Cake\ORM\Query $query

запрос, к которому подключается эта ассоциация

Возвращает

void

_entityName() protected

_entityName(string $name): string

Создает правильное имя сущности (единственное число) для указанного имени

Параметры

string $name

Имя

Возвращает

string

_extractFinder() protected

_extractFinder(array|string $finderData): array

Вспомогательный метод для вывода запрошенного findera и его параметров.

Возвращает выведенные параметры из findera $type.

Примеры:

Следующий код вызовет finder 'translations' со значением findera в качестве его параметров: $query->contain(['Comments' => ['finder' => ['translations']]]); $query->contain(['Comments' => ['finder' => ['translations' => []]]]); $query->contain(['Comments' => ['finder' => ['translations' => ['locales' => ['en_US']]]]]);

Параметры

array|string $finderData

Имя findera или массив, содержащий имя в качестве ключа и параметры в качестве значения.

Возвращает

array

_fixtureName() protected

_fixtureName(string $name): string

Создает имя фикстуры

Параметры

string $name

Имя класса модели

Возвращает

string

_foreignKeyAcceptsNull() protected

_foreignKeyAcceptsNull(Cake\ORM\Table $table, array $properties): bool

Проверяет флаг nullable внешнего ключа

Параметры

Cake\ORM\Table $table

таблица, содержащая внешний ключ

array $properties

список полей, составляющих внешний ключ

Возвращает

bool

_formatAssociationResults() protected

_formatAssociationResults(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array<string, mixed> $options): void

Добавляет функцию форматирования к переданному $query, если запрос $surrogate объявляет какой-либо другой форматтер. Поскольку запрос $surrogate соответствует связанной целевой таблице, результирующий форматтер будет результатом применения суррогатных форматтеров только к свойству, соответствующему такой таблице.

Параметры

Cake\ORM\Query $query

запрос, к которому будет применена функция форматирования

Cake\ORM\Query $surrogate

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

array<string, mixed> $options

параметры, переданные методу attachTo

Возвращает

void

_joinCondition() protected

_joinCondition(array<string, mixed> $options): array

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

Параметры

array<string, mixed> $options

список параметров, переданных методу attachTo

Возвращает

array

Исключения

RuntimeException
если количество столбцов во внешнем ключе не совпадает с количеством столбцов в первичном ключе исходной таблицы

_modelKey() protected

_modelKey(string $name): string

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

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

Параметры

string $name

Имя класса модели

Возвращает

string

_modelNameFromKey() protected

_modelNameFromKey(string $key): string

Создаёт правильное имя модели по внешнему ключу

Параметры

string $key

Внешний ключ

Возвращает

string

_options() protected

_options(array<string, mixed> $options): void

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

Параметры

array<string, mixed> $options

исходный список параметров, переданных в конструктор

Возвращает

void

_pluginNamespace() protected

_pluginNamespace(string $pluginName): string

Возвращает имя пространства имён плагина

Параметры

string $pluginName

Имя плагина

Возвращает

string

_pluginPath() protected

_pluginPath(string $pluginName): string

Находит правильный путь для плагина. Проверяет $pluginPaths, чтобы найти нужный плагин.

Параметры

string $pluginName

Имя плагина, например DebugKit

Возвращает

string

_pluralHumanName() protected

_pluralHumanName(string $name): string

Создаёт множественное число человекочитаемого имени, используемого в представлениях

Параметры

string $name

Имя контроллера

Возвращает

string

_propertyName() protected

_propertyName(): string

Возвращает имя свойства по умолчанию, основанное на имени ассоциации.

Возвращает

string

_saveTarget() protected

_saveTarget(array $foreignKeyReference, Cake\Datasource\EntityInterface $parentEntity, array $entities, array<string, mixed> $options): bool

Сохраняет каждый из сущностей в целевой таблице и создаёт связи между родительской сущностью и каждой сохранённой целевой сущностью.

Параметры

array $foreignKeyReference

Внешний ключ, определяющий связь между целевой сущностью и родительской сущностью.

Cake\Datasource\EntityInterface $parentEntity

Исходная сущность, содержащая целевые сущности для сохранения.

array $entities

список сущностей для сохранения в целевой таблице и создания связи с родительской сущностью

array<string, mixed> $options

список параметров, принимаемых Table::save().

Возвращает

bool

_singularHumanName() protected

_singularHumanName(string $name): string

Создаёт единственное число человекочитаемого имени, используемого в представлениях

Параметры

string $name

Имя контроллера

Возвращает

string

_singularName() protected

_singularName(string $name): string

Создаёт единственное число имени для использования в представлениях.

Параметры

string $name

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

Возвращает

string

_unlink() protected

_unlink(array $foreignKey, Cake\ORM\Table $target, array $conditions = [], array<string, mixed> $options = []): bool

Удаляет/устанавливает NULL связанные объекты, соответствующие условиям $conditions.

Действие зависит от зависимости между источником и целевыми объектами, а также от возможности значения NULL для внешних ключей.

Параметры

array $foreignKey

массив свойств внешнего ключа

Cake\ORM\Table $target

Связанная таблица

array $conditions optional

Условие, определяющее объекты, которые нужно разорвать

array<string, mixed> $options optional

список параметров, принимаемых Table::delete()

Возвращает

bool

_unlinkAssociated() protected

_unlinkAssociated(array $foreignKeyReference, Cake\Datasource\EntityInterface $entity, Cake\ORM\Table $target, iterable $remainingEntities = [], array<string, mixed> $options = []): bool

Удаляет/устанавливает NULL связанные объекты в зависимости от зависимости между источником и целевыми объектами и от возможности значения NULL для внешних ключей. Пропускает удаление записей, присутствующих в $remainingEntities

Параметры

array $foreignKeyReference

Внешний ключ, определяющий связь между целевой сущностью и родительской сущностью.

Cake\Datasource\EntityInterface $entity

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

Cake\ORM\Table $target

Связанная таблица

iterable $remainingEntities optional

Сущности, которые не нужно удалять

array<string, mixed> $options optional

список параметров, принимаемых Table::delete()

Возвращает

bool

_variableName() protected

_variableName(string $name): string

Создаёт множественное число имени переменной для представлений

Параметры

string $name

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

Возвращает

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<string, mixed> $row, bool $joined): array<string, mixed>

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

Параметры

array<string, mixed> $row
bool $joined

Возвращает

array<string, mixed>

deleteAll() public

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

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

Parameters

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

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

Returns

int

See Also

\Cake\ORM\Table::deleteAll()

eagerLoader() public

eagerLoader(array<string, mixed> $options): Closure

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

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

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

Массив options принимает следующие ключи:

  • query: Объект Query, настроенный для поиска записей в исходной таблице
  • keys: Список значений первичных ключей из исходной таблицы
  • foreignKey: Имя поля, используемого для связи обеих таблиц
  • conditions: Список условий, которые будут переданы методу where() запроса
  • sort: Направление, в котором записи должны быть возвращены
  • fields: Список полей для выбора из целевой таблицы
  • contain: Список связанных таблиц для загрузки связанных с целевой таблицей
  • strategy: Имя стратегии, которую нужно использовать для поиска записей в целевой таблице
  • nestKey: Ключ массива, под которым будут найдены результаты при преобразовании строки

Parameters

array<string, mixed> $options

Returns

Closure

exists() public

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

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

Parameters

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

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

Returns

bool

See Also

\Cake\ORM\Table::exists()

fetchTable() public

fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table

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

Parameters

string|null $alias optional

Имя псевдонима, которое вы хотите получить. Должно быть в формате CamelCase. Если null , используется значение свойства $defaultTable.

array<string, mixed> $options optional

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

Returns

Cake\ORM\Table

Throws

Cake\Core\Exception\CakeException
Если аргумент `$alias` и свойство `$defaultTable` оба равны `null`.

See Also

\Cake\ORM\TableLocator::get()

find() public

find(array<string, mixed>|string|null $type = null, array<string, mixed> $options = []): Cake\ORM\Query

Передает операцию поиска методу find целевой таблицы и соответствующим образом изменяет запрос на основе конфигурации этой связи

Parameters

array<string, mixed>|string|null $type optional

тип запроса для выполнения, если передается массив, он будет интерпретироваться как параметр $options

array<string, mixed> $options optional

Параметры для поиска

Returns

Cake\ORM\Query

See Also

\Cake\ORM\Table::find()

getBindingKey() public

getBindingKey(): array<string>|string

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

Returns

array<string>|string

getCascadeCallbacks() public

getCascadeCallbacks(): bool

Возвращает, следует ли также вызывать обратные вызовы при каскадных удалениях.

Returns

bool

getClassName() public

getClassName(): string

Возвращает имя класса объекта целевой таблицы.

Returns

string

getConditions() public

getConditions(): Closure|array

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

Returns

Closure|array

See Also

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

getDependent() public

getDependent(): bool

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

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

Returns

bool

getFinder() public

getFinder(): array|string

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

Returns

array|string

getForeignKey() public

getForeignKey(): array<string>|string

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

Returns

array<string>|string

getJoinType() public

getJoinType(): string

Возвращает тип соединения, которое будет использоваться при добавлении связи к запросу.

Returns

string

getName() public

getName(): string

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

Returns

string

getProperty() public

getProperty(): string

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

Returns

string

getSaveStrategy() public

getSaveStrategy(): string

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

Returns

string

getSort() public

getSort(): mixed

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

Returns

mixed

getSource() public

getSource(): Cake\ORM\Table

Возвращает экземпляр таблицы для исходной стороны связи.

Returns

Cake\ORM\Table

getStrategy() public

getStrategy(): string

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

Returns

string

getTableLocator() public

getTableLocator(): Cake\ORM\Locator\LocatorInterface

Возвращает локатор таблицы.

Returns

Cake\ORM\Locator\LocatorInterface

getTarget() public

getTarget(): Cake\ORM\Table

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

Returns

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.4/class-Cake.ORM.Association.HasMany.html

Spec-Zone.ru

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