Skip to content
Github

Including relationships

The include query parameter will load any Model relation or relation count on the resulting models. All includes must be explicitly allowed using allowedIncludes. This method takes an array of relationship names or AllowedInclude instances.

// GET /users?include=posts

const users = await User.query().allowedIncludes('posts');

// users will contain all users with their posts loaded

You can specify multiple relationships by separating them with a comma:

// GET /users?include=posts,permissions

const users = await User.query().allowedIncludes('posts', 'permissions');

// users will contain all users with their posts and permissions loaded

There is no way to include relationships by default in this package. Default relationships are built-in to query builder itself using the preload method on the query:

const users = await User.query().allowedIncludes('friends').preload('posts').withCount('posts');

When trying to include a relationship that’s not specified in allowedIncludes, an InvalidIncludeQuery exception will be thrown. Its exception message contains the allowed includes for reference.

You can load nested relationships using the dot notation.

// GET /users?include=posts.comments,permissions

const users = await User.query().allowedIncludes('posts.comments', 'permissions');

// users will contain all users with their posts, comments on their posts and permissions loaded