I have the following flutter moor query
(select(recipeGarnishes)..where((tbl) => tbl.postGarnish.equals(true))).get();
How would I add the distinct condition to the query?
Update: The query I want to write is:
select DISTINCT garnishName from RecipeGarnishes where postGarnish = 'true'
garnishName and postGarnish are columns in my RecipeGarnishes table
Update 2:
Based on the answer, I tried this.
final query = selectOnly(recipeGarnishes, distinct: true)
..addColumns([recipeGarnishes.garnishName])
..where(recipeGarnishes.postGarnish.equals(postGarnish));
List<TypedResult> result = await query.get();
return result.map((row) => row.readTable(recipeGarnishes)).toList();
But it gives me the following error
Moor: Sent SELECT DISTINCT recipe_garnishes.garnish_name AS "recipe_garnishes.garnish_name" FROM recipe_garnishes WHERE recipe_garnishes.post_garnish = ?; with args [1]
[ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The getter 'garnishName' was called on null.
The query itself is correct, but you can't read the result like that: row.readTable would return a full row with all columns. However, you only select a single column (garnishName), so moor can't load the row and returns null instead.
You can use
final query = selectOnly(recipeGarnishes, distinct: true)
..addColumns([recipeGarnishes.garnishName])
..where(recipeGarnishes.postGarnish.equals(postGarnish));
return query.map((row) => row.read(recipeGarnishes.garnishName)).get();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With