Page Contents

Home > @loopback/repository > DefaultCrudRepository > createHasManyThroughRepositoryFactoryFor

DefaultCrudRepository.createHasManyThroughRepositoryFactoryFor() method

Function to create a constrained hasManyThrough relation repository factory

Signature:

protected createHasManyThroughRepositoryFactoryFor<Target extends Entity, TargetID, Through extends Entity, ThroughID, ForeignKeyType>(relationName: string, targetRepoGetter: Getter<EntityCrudRepository<Target, TargetID>>, throughRepoGetter: Getter<EntityCrudRepository<Through, ThroughID>>): HasManyThroughRepositoryFactory<Target, TargetID, Through, ForeignKeyType>;

Parameters

Parameter Type Description
relationName string Name of the relation defined on the source model
targetRepoGetter Getter<EntityCrudRepository<Target, TargetID>>  
throughRepoGetter Getter<EntityCrudRepository<Through, ThroughID>>  

Returns:

HasManyThroughRepositoryFactory<Target, TargetID, Through, ForeignKeyType>

Example

class CustomerRepository extends DefaultCrudRepository<
  Customer,
  typeof Customer.prototype.id,
  CustomerRelations
> {
  public readonly cartItems: HasManyRepositoryFactory<CartItem, typeof Customer.prototype.id>;

  constructor(
    protected db: juggler.DataSource,
    cartItemRepository: EntityCrudRepository<CartItem, typeof, CartItem.prototype.id>,
    throughRepository: EntityCrudRepository<Through, typeof Through.prototype.id>,
  ) {
    super(Customer, db);
    this.cartItems = this.createHasManyThroughRepositoryFactoryFor(
      'cartItems',
      cartItemRepository,
    );
  }
}