The new RelationshipFilter allows you to find all items, having a relationship - like blog-post with a certain tag, or products which are used by customers of some industry.
Example of the new RelationshipFilter
The following example shows the RelationshipFilter being used for 4 different kinds of filters at the same time (but there are way more possibilities):
This shows an App with Company-items, which have categories. The various filters here show:
- All companies having the "Second" category
- All companies having exactly 2 categories
- All companies having categories, which are marked as "Fun"
- All companies without categories
What's new in the RelationshipFilter 2
We've added 4 important new features:
- Separator-character - this allows us to apply multiple options to look for, like "Web,IT"
- Attribute-On-Relationship - this allows us to filter not just by the title (like the tag-name) but also by further criterias (like a tag-priority)
- Operator - many new operators like contains, containsany, first and more
- Not-Operator-Prefix - to query for items which are the opposite of a match
Let's look at the details
Using the Separator for Multiple Filter-Criterias
Until 2sxc 9.8 you could only check for 1 related item, so you could only say
- give me all items which have this one author
In 2sxc 9.9 we are now able to specify multiple authors, allowing queries like
- give me all items which have all these authors
- give me all items which have any of these authors
- give me all items which don't have any of these categories
- give me all items, which have any of these categories as a first category
This works using the separation-character, which is usually a comma , but could be something different (in case your items have commas in the texts you're comparing). If you don't specify a separator, none will be used and the whole Filter criteria is treated as one value. Here's where you set it:
Attribute-On-Relationship to Query other Fields
In 2sxc 9.9 we added the ability to specify which field you want to compare (before it was always Id or Title). Here's an example:
New Operators and the Not- Prefix
Untill 2sxc 9.8, you could not specify an operator, and contains was the assumed operator. In 9.9 we added a lot more. To explain what each does, assume that our main stream contains items of BlogPost and we only want to keep the posts having certain Tags.
Here's the list, each is explained more below:
- contains - will return all items (BlogPosts), having allthe children (tags) specified
- containsany - will return all items (BlogPosts) having any of the children (tags) specified
- not-contains will return all items (BlogPosts) not-having-all of the children (tags). So it will also return those items, having some of the children.
- not-containsany will return all items (BlogPosts) having none of the children (tags) specified.
- any will return all items (BlogPosts) having any children at all (tags). So the filter is ignored. This is the same as count=0.
- not-any will return all items (BlogPosts) having no children (tags).
- first will return all items (BlogPosts) where the first child (tag) is one of the filter-options. This is for scenarios where you say the first tag is a primary-category or similar.
- not-first will return all items (BlogPosts) where the first children (tags) is not one of the filter values.
- count will return all items (BlogPosts) having a specific amount of children (tags)
- not-count will return all items (BlogPosts) not having a specific amount of children (tags)
Hope you love it! Please try it (download on Github) and give us feedback.