Spec-Zone.ru › CakePHP 4.2

Класс 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
    string|string[]|null

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

  • $_cascadeCallbacks protected
    bool

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

  • $_className protected
    string

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

  • $_conditions protected
    arrayClosure

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

  • $_dependent protected
    bool

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

  • $_finder protected
    string|array

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

  • $_foreignKey protected
    string|string[]

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

  • $_joinType protected
    string

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

  • $_name protected
    string

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

  • $_propertyName protected
    string

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

  • $_saveStrategy protected
    string

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

  • $_sort protected
    mixed

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

  • $_sourceTable protected
    Cake\ORM\Table

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

  • $_strategy protected
    string

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

  • $_tableLocator protected
    Cake\ORM\Locator\LocatorInterface|null

    Экземпляр локализации таблиц.

  • $_targetTable protected
    Cake\ORM\Table

    Экземпляр целевой таблицы.

  • $_validStrategies protected
    string[]

    Действительные стратегии для этого типа ассоциации.

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 с верблюжьей нотацией.

  • _dispatchBeforeFind() protected

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

  • _entityName() protected

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

  • _extractFinder() protected

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

  • _fixtureName() protected

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

  • _foreignKeyAcceptsNull() protected

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

  • _formatAssociationResults() protected

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

  • _joinCondition() protected

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

  • _modelKey() protected

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

  • _modelNameFromKey() protected

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

  • _options() protected

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

  • _pluginNamespace() protected

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

  • _pluginPath() protected

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

  • _pluralHumanName() protected

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

  • _propertyName() protected

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

  • _saveTarget() protected

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

  • _singularHumanName() protected

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

  • _singularName() protected

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

  • _unlink() protected

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

  • _unlinkAssociated() protected

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

  • _variableName() protected

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

  • attachTo() public

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

  • canBeJoined() public

    Можно ли выразить эту ассоциацию напрямую в соединении запроса.

  • cascadeDelete() public

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

  • defaultRowValue() public

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

  • deleteAll() public

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

  • eagerLoader() public

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

  • exists() public

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

  • find() public

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

  • getBindingKey() public

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

  • getCascadeCallbacks() public

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

  • getClassName() public

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

  • getConditions() public

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

  • getDependent() public

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

  • получитьИскатель() public

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

  • получитьВнешнийКлюч() public

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

  • получитьТипСоединения() public

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

  • получитьИмя() public

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

  • получитьСвойство() public

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

  • получитьСтратегиюСохранения() public

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

  • получитьСортировку() public

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

  • получитьИсточник() public

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

  • получитьСтратегию() public

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

  • получитьРаспознавательТаблицы() public

    Получает распознаватель таблицы.

  • получитьЦель() public

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

  • являетсяЛиВладеющейСтороной() public

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

  • связать() public

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

  • заменить() public

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

  • требуетКлючи() public

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

  • сохранитьСвязанное() public

    Берет сущность из исходной таблицы и проверяет, есть ли поле, соответствующее имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации, передав предоставленные $options

  • установитьСвязывающийКлюч() public

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

  • установитьКаскадныеОбратныеВызовы() public

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

  • установитьИмяКласса() public

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

  • установитьУсловия() public

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

  • установитьЗависимость() public

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

  • установитьИскатель() public

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

  • установитьВнешнийКлюч() public

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

  • установитьТипСоединения() public

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

  • установитьИмя() public

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

  • установитьСвойство() public

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

  • установитьСтратегиюСохранения() public

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

  • установитьСортировку() public

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

  • установитьИсточник() public

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

  • установитьСтратегию() public

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

  • установитьРаспознавательТаблицы() public

    Устанавливает распознаватель таблицы.

  • установитьЦель() public

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

  • преобразоватьСтроку() public

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

  • тип() public

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

  • отвязать() public

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

  • обновитьВсе() public

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

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

__call() public

__call(string $method, array $argument): mixed

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

Parameters

string $method

имя вызываемого метода

array $argument

Список аргументов, переданных в функцию

Returns

mixed

Throws

BadMethodCallException

__construct() public

__construct(string $alias, array $options = [])

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

Parameters

string $alias

Имя, данное ассоциации

array $options optional

Список свойств, которые должны быть установлены для этого объекта

__get() public

__get(string $property): Cake\ORM\Association

Перенаправляет получение свойства на целевую таблицу. Это удобно для получения ассоциаций этой ассоциации

Parameters

string $property

имя свойства

Returns

Cake\ORM\Association

Throws

RuntimeException
если ассоциация с таким именем не существует

__isset() public

__isset(string $property): bool

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

Parameters

string $property

имя свойства

Returns

bool

_appendFields() protected

_appendFields(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array $options): void

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

Parameters

Cake\ORM\Query $query

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

Cake\ORM\Query $surrogate

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

array $options

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

Returns

void

_appendNotMatching() protected

_appendNotMatching(Cake\ORM\Query $query, array $options): void

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

Parameters

Cake\ORM\Query $query

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

array $options

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

Returns

void

_bindNewAssociations() protected

_bindNewAssociations(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array $options): void

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

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

Parameters

Cake\ORM\Query $query

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

Cake\ORM\Query $surrogate

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

array $options

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

Returns

void

_camelize() protected

_camelize(string $name): string

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

Parameters

string $name

имя

Returns

string

_dispatchBeforeFind() protected

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

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

Parameters

Cake\ORM\Query $query

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

Returns

void

_entityName() protected

_entityName(string $name): string

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

Parameters

string $name

Имя

Returns

string

_extractFinder() protected

_extractFinder(string|array $finderData): array

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

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

Examples:

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

Parameters

string|array $finderData

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

Returns

array

_fixtureName() protected

_fixtureName(string $name): string

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

Parameters

string $name

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

Returns

string

_foreignKeyAcceptsNull() protected

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

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

Parameters

Cake\ORM\Table $table

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

array $properties

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

Returns

bool

_formatAssociationResults() protected

_formatAssociationResults(Cake\ORM\Query $query, Cake\ORM\Query $surrogate, array $options): void

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

Parameters

Cake\ORM\Query $query

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

Cake\ORM\Query $surrogate

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

array $options

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

Returns

void

_joinCondition() protected

_joinCondition(array $options): array

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

Parameters

array $options

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

Returns

array

Throws

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

_modelKey() protected

_modelKey(string $name): string

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

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

Parameters

string $name

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

Returns

string

_modelNameFromKey() protected

_modelNameFromKey(string $key): string

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

Параметры

string $key

Внешний ключ

Возвращает

string

_options() protected

_options(array $options): void

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

Параметры

array $options

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

Возвращает

void

_pluginNamespace() protected

_pluginNamespace(string $pluginName): string

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

Параметры

string $pluginName

Имя плагина

Возвращает

string

_pluginPath() protected

_pluginPath(string $pluginName): string

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

Параметры

string $pluginName

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

Возвращает

string

_pluralHumanName() protected

_pluralHumanName(string $name): string

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

Параметры

string $name

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

Возвращает

string

_propertyName() protected

_propertyName(): string

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

Возвращает

string

_saveTarget() protected

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

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

Параметры

array $foreignKeyReference

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

Cake\Datasource\EntityInterface $parentEntity

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

array $entities

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

array $options

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

Возвращает

bool

_singularHumanName() protected

_singularHumanName(string $name): string

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

Параметры

string $name

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

Возвращает

string

_singularName() protected

_singularName(string $name): string

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

Параметры

string $name

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

Возвращает

string

_unlink() protected

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

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

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

Параметры

array $foreignKey

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

Cake\ORM\Table $target

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

array $conditions optional

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

array $options optional

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

Возвращает

bool

_unlinkAssociated() protected

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

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

Параметры

array $foreignKeyReference

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

Cake\Datasource\EntityInterface $entity

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

Cake\ORM\Table $target

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

iterable $remainingEntities optional

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

array $options optional

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

Возвращает

bool

_variableName() protected

_variableName(string $name): string

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

Параметры

string $name

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

Возвращает

string

attachTo() public

attachTo(Cake\ORM\Query $query, array $options = []): void

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

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

  • includeFields: Включать ли поля целевой модели в результат?
  • foreignKey: Имя поля для использования в качестве внешнего ключа (если false, не использовать)
  • conditions: Массив с условиями для фильтрации объединения, который будет объединён с любыми исходно настроенными условиями для этой ассоциации.
  • fields: Список полей в целевой таблице, которые нужно включить в результат.
  • type: Тип объединения (например, INNER) для записей, найденных по этой ассоциации.
  • aliasPath: Строка, разделённая точками, представляющая путь имён ассоциаций, следующих от основной таблицы переданного запроса к этой ассоциации.
  • propertyPath: Строка, разделённая точками, представляющая путь свойств ассоциации, которые нужно следовать от основной сущности переданного запроса к этой ассоциации.
  • joinType: Тип SQL-объединения, используемого в запросе.
  • negateMatch: Добавит условие в переданный запрос для исключения совпадений по этой ассоциации.

Параметры

Cake\ORM\Query $query

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

array $options optional

Любые дополнительные параметры или переопределения, которые нужно учитывать

Возвращает

void

Выбрасывает

RuntimeException
если переданный билдер запросов не возвращает объект запроса

canBeJoined() public

canBeJoined(array $options = []): bool

Можно ли эту ассоциацию выразить непосредственно в объединении запроса?

Параметры

array $options optional

настраиваемые параметры ключа, которые могут изменить возвращаемое значение

Возвращает

bool

cascadeDelete() public

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

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

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

Параметры

Cake\Datasource\EntityInterface $entity
array $options optional

Возвращает

bool

defaultRowValue() public

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

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

Параметры

array $row
bool $joined

Возвращает

array

deleteAll() public

deleteAll(mixed $conditions): int

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

Parameters

mixed $conditions

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

Returns

int

See Also

\Cake\ORM\Table::deleteAll()

eagerLoader() public

eagerLoader(array $options): Closure

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

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

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

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

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

Parameters

array $options

Returns

Closure

exists() public

exists(arrayClosureCake\Database\ExpressionInterface $conditions): bool

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

Parameters

arrayClosureCake\Database\ExpressionInterface $conditions

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

Returns

bool

See Also

\Cake\ORM\Table::exists()

find() public

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

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

Parameters

string|array|null $type optional

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

array $options optional

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

Returns

Cake\ORM\Query

See Also

\Cake\ORM\Table::find()

getBindingKey() public

getBindingKey(): string|string[]

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

Returns

string|string[]

getCascadeCallbacks() public

getCascadeCallbacks(): bool

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

Returns

bool

getClassName() public

getClassName(): string

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

Returns

string

getConditions() public

getConditions(): arrayClosure

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

Returns

arrayClosure

See Also

\Cake\Database\Query::where() for examples on the format of the array

getDependent() public

getDependent(): bool

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

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

Returns

bool

getFinder() public

getFinder(): string|array

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

Returns

string|array

getForeignKey() public

getForeignKey(): string|string[]

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

Returns

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

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

Parameters

Cake\ORM\Table $side

Потенциальная таблица с правом собственности

Returns

bool

link() public

link(Cake\Datasource\EntityInterface $sourceEntity, array $targetEntities, array $options = []): bool

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

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

Пример:

$user = $users->get(1);
$allArticles = $articles->find('all')->toArray();
$users->Articles->link($user, $allArticles);

$user->get('articles') будет содержать все статьи из $allArticles после связывания

Параметры

Cake\Datasource\EntityInterface $sourceEntity

строка, относящаяся к стороне source этой ассоциации

array $targetEntities

список сущностей, относящихся к стороне target этой ассоциации

array $options необязательно

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

Возвращает

bool

replace() public

replace(Cake\Datasource\EntityInterface $sourceEntity, array $targetEntities, array $options = []): bool

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

Например, если у автора много статей, таких как «статья1», «статья 2» и «статья 3», и вы передаете в этот метод массив, содержащий сущности для статей «статья 1» и «статья 4», только связь для «статья 1» будет сохранена в базе данных, связи для «статья 2» и «статья 3» будут удалены, а связь для «статья 4» будет создана.

Существующие связи не удаляются и не создаются заново, они либо остаются без изменений, либо обновляются.

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

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

Дополнительные параметры для сохранения новых связей можно передать в третьем аргументе, ознакомьтесь с Table::save(), чтобы получить информацию о поддерживаемых параметрах.

Пример:

$author->articles = [$article1, $article2, $article3, $article4];
$authors->save($author);
$articles = [$article1, $article3];
$authors->getAssociation('articles')->replace($author, $articles);

$author->get('articles') будет содержать только [$article1, $article3] в конце

Параметры

Cake\Datasource\EntityInterface $sourceEntity

сущность, сохранённая в исходной таблице для этой ассоциации

array $targetEntities

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

array $options необязательно

список параметров, которые будут переданы внутренним вызовам save/delete при сохранении/обновлении новых связей или удалении существующих

Возвращает

bool

Исключения

InvalidArgumentException
если переданы несохранённые сущности или если у какой-либо из них отсутствует значение первичного ключа

requiresKeys() public

requiresKeys(array $options = []): bool

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

Параметры

array $options необязательно

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

Возвращает

bool

saveAssociated() public

saveAssociated(Cake\Datasource\EntityInterface $entity, array $options = []): Cake\Datasource\EntityInterface|false

Принимает сущность из исходной таблицы и проверяет, существует ли поле, соответствующее имени свойства для этой ассоциации. Найденная сущность будет сохранена в целевой таблице для этой ассоциации путём передачи предоставленных $options

Параметры

Cake\Datasource\EntityInterface $entity

сущность из исходной таблицы

array $options необязательно

параметры, передаваемые методу сохранения в целевой таблице

Возвращает

Cake\Datasource\EntityInterface|false

Исключения

InvalidArgumentException
при невозможности обхода данных ассоциации.

См. также

\Cake\ORM\Table::save()

setBindingKey() public

setBindingKey(string|string[] $key): $this

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

Параметры

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(arrayClosure $conditions): Cake\ORM\Association

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

Параметры

arrayClosure $conditions

список используемых условий

Возвращает

Cake\ORM\Association

См. также

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

setDependent() public

setDependent(bool $dependent): $this

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

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

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

Параметры

bool $dependent

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

Возвращает

$this

setFinder() public

setFinder(string|array $finder): $this

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

Параметры

string|array $finder

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

Возвращает

$this

setForeignKey() public

setForeignKey(string|string[] $key): $this

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

Параметры

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|bool $options = []): void

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

Параметры

В дополнение к параметрам по умолчанию, принимаемым Table::delete(), поддерживаются следующие ключи:

  • cleanProperty: Удалить или нет все объекты в $targetEntities, которые хранятся в $sourceEntity (по умолчанию: true)

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

Изменения сохраняются в базе данных и также в сущности источника.

Пример:

$user = $users->get(1);
$user->articles = [$article1, $article2, $article3, $article4];
$users->save($user, ['Associated' => ['Articles']]);
$allArticles = [$article1, $article2, $article3];
$users->Articles->unlink($user, $allArticles);

$article->get('articles') будет содержать только [$article4] после удаления в базе данных

Параметры

Cake\Datasource\EntityInterface $sourceEntity

сущность, сохраненная в таблице источника для этой ассоциации

array $targetEntities

список сущностей, сохраненных в целевой таблице для этой ассоциации

array|bool $options optional

список параметров, которые будут переданы в вызов delete. Если булево, он будет использоваться в качестве значения для опции "cleanProperty".

Возвращает

void

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

InvalidArgumentException
если переданы несохраненные сущности или если какой-либо из них не имеет значения первичного ключа

updateAll() public

updateAll(array $fields, mixed $conditions): int

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

Параметры

array $fields

Хэш поля => новое значение.

mixed $conditions

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

Возвращает

int

См. также

\Cake\ORM\Table::updateAll()

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

$_bindingKey protected

Имя поля в таблице владельца, используемое для сопоставления с foreignKey

Тип

string|string[]|null

$_cascadeCallbacks protected

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

Тип

bool

$_className protected

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

Тип

string

$_conditions protected

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

Тип

arrayClosure

$_dependent protected

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

Тип

bool

$_finder protected

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

Тип

string|array

$_foreignKey protected

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

Тип

string|string[]

$_joinType protected

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

Тип

string

$_name protected

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

Тип

string

$_propertyName protected

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

Тип

string

$_saveStrategy protected

Стратегия сохранения, которая должна быть использована этой ассоциацией

Тип

string

$_sort protected

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

Тип

mixed

$_sourceTable protected

Экземпляр исходной таблицы

Тип

Cake\ORM\Table

$_strategy protected

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

Тип

string

$_tableLocator protected

Экземпляр локатора таблицы

Тип

Cake\ORM\Locator\LocatorInterface|null

$_targetTable protected

Экземпляр целевой таблицы

Тип

Cake\ORM\Table

$_validStrategies protected

Допустимые стратегии для этого типа ассоциации

Тип

string[]

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.2/class-Cake.ORM.Association.HasMany.html

Spec-Zone.ru

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