Skip to content

Commit

Permalink
chore(docs): update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
LookinGit committed Feb 14, 2024
1 parent aac22b8 commit 9ed189d
Showing 1 changed file with 46 additions and 4 deletions.
50 changes: 46 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ export default class UsersController {

### Filtering relations

For filtering relations of model may be use `.query().filter()` or scope `filtration`, example:
For filtering relations of model may be use scope `filtration`, example:

```ts
import type { HttpContext } from '@adonisjs/core/http'
Expand All @@ -283,14 +283,56 @@ export default class UserPostsController {
return user.related('posts').query()
.apply(scopes => scopes.filtration(request.qs()))
.exec()

// or

}
}
```

For filtering relations throuth `.query().filter()` method must be *extend* `ModelQueryBuilder` methods.
> This is require file `providers/app_provider.ts`. More [about providers](https://docs.adonisjs.com/guides/service-providers)
```ts
// providers/app_provider.ts
import type { ApplicationService } from '@adonisjs/core/types'
import { extendModelQueryBuilder } from 'adonis-lucid-filter/bindings'

export default class AppProvider {
constructor(protected app: ApplicationService) {}

/**
* Register bindings to the container
*/
register() {}

/**
* The container bindings have booted
*/
async boot() {
const { ModelQueryBuilder } = await import('@adonisjs/lucid/orm')
extendModelQueryBuilder(ModelQueryBuilder)
}
}
```

Now may be use `.query().filter()`, example:

```ts
import type { HttpContext } from '@adonisjs/core/http'
import User from '#models/user'

export default class UserPostsController {
/**
* Get a list posts of user
* GET /users/:user_id/posts
*/
async index({ params, request }: HttpContext): Promise<Post[]> {
const user: User = await User.findOrFail(params.user_id)

return user.related('posts').query().filter(request.qs()).exec()
}
}
```


Documentation by [Query Scopes](https://lucid.adonisjs.com/docs/model-query-scopes)

**Note:** The relation model must be Filterable and `$filter` must be defined in it
Expand Down

0 comments on commit 9ed189d

Please sign in to comment.