私はRustとDieselにはまったく慣れていません。私は今、次のようなクエリにディーゼルフィルタリングを実装しようとしています:
-- @param1 is duration in years
-- @param2 is duration in months
SELECT columns FROM a
WHERE
(...dynamic AND clauses)
AND (((a.min_unit = "Years") AND (a.min_duration <= @param1))
OR ((a.min_unit = "Months") AND (a.min_duration <= @param2)))
(...dynamic AND clauses)
ドキュメントや Web でいくつか検索した後も、これを行う方法が見つかりませんでした。私の最も近い推測は次のとおりです。
let param1 = ...;
let param2 = ...;
let mut query = a::table.select(a::all_columns).into_boxed();
// dynamic clauses: query = query.filter(...) ...
query = query.filter(a::min_unit.eq(Some("Years")).and(a::min_duration.le(Some(param1))))
.or_filter(a::min_unit.eq(Some("Months")).and(a::min_duration.le(Some(param2))));
// dynamic clauses: query = query.filter(...) ...
let results = a::table.load<A>(&*conn);
誰でもアイデアがありますか?
ありがとう!