# WherePhrase constructor

- List<
WhereCondition> conditions, - {bool required}

A collection of conditions that are evaluated together.

If mixing `required:true`

`required:false`

is necessary, use separate WherePhrases.
WherePhrases can be mixed with Where.

Invalid:

```
WherePhrase([
Where.exact('myField', true),
Or('myOtherField').isExactly(0),
])
```

Valid:

```
WherePhrase([
Where.exact('myField', true),
WherePhrase([
Or('myOtherField').isExactly(0),
Or('myOtherField').isExactly(1),
)]
])
```

## Implementation

```
// Why isn't WherePhrase a Where?
// The type hinting of distinct classes leads to a positive dev experience. When you type Where( you get a hint that the first arg is a column and the second arg is a value. When you type WherePhrase(, you get a hint that the first arg is a List.
//
// This also avoids putting too much logic into a single class by splitting it between two that should functionally be different. Determining if we're dealing with a Where or a WherePhrase also makes life easy on the translator.
//
// `required` also operates slightly differently for both. In where, it's the column. In WherePhrase, it's the whole chunk.
const WherePhrase(
this.conditions, {
bool required,
}) : this.required = required ?? false;
```