|null $columnData */ public function relate(Entity $entity, string $relationName, Entity $foreignEntity, ?array $columnData): bool; /** * Unrelate an entity from another entity. */ public function unrelate(Entity $entity, string $relationName, Entity $foreignEntity): void; /** * Unrelate an entity from another entity by a given ID. * * @param array|null $columnData */ public function relateById(Entity $entity, string $relationName, string $id, ?array $columnData = null): bool; /** * Unrelate an entity from another entity by a given ID. */ public function unrelateById(Entity $entity, string $relationName, string $id): void; /** * Mass relate. */ public function massRelate(Entity $entity, string $relationName, Select $select): void; /** * Update relationship columns. * * @param array $columnData */ public function updateRelationColumns( Entity $entity, string $relationName, string $id, array $columnData ): void; /** * Get a relationship column value. * * @return string|int|float|bool|null A relationship column value. */ public function getRelationColumn( Entity $entity, string $relationName, string $id, string $column ): string|int|float|bool|null; /** * Select related entities from DB. * * @return Collection|Entity|null */ public function selectRelated(Entity $entity, string $relationName, ?Select $select = null): Collection|Entity|null; /** * Get a number of related entities in DB. */ public function countRelated(Entity $entity, string $relationName, ?Select $select = null): int; }