2013-01-16 13 views
5

次の関数はうまくいきますが、まずparent_idで結果をソートし、次にソートしたいと思います。Slickクエリの結果を式に代入する

def getTree = for { 
    (a, c) <- Activities leftJoin Clients on (_.id === _.id_a) 
} yield (a.id, a.label, a.parent_id, a.order, c.id.?, a=c.name) 

どのようにしてSlickを使用しますか?

答えて

10

通常のコレクションと同じですか?スリック2.1で

getTree.sortBy(r => r._3 ~ r._4) 
+1

をタプル構文は...ではありませんどのように直感的。あまりにも古いorderBy(nameThatHasMeaning、otherMeaningfulName.desc)は、sortBy(x => x._3〜x._4)の構文を使用して非推奨になりました。スリックな作者にはそのような理由がありましたが、結果としてどのタプル数が定型化されて無意味なものになるかはエンドユーザに苦しんでいました。 – virtualeyes

+0

いくつかのケースクラスインスタンスと 'getTree.sortBy(r => r.parent_id〜r.order)'を 'yield 'できますが、実際のケースクラスの宣言は定型文です。 '( 'name1 - > value1、' name2 - > value2)'のようなコンストラクタを持ち、 'apply(name:Symbol) 'のようなアクセサがコアのScalaで便利でしょうか?たとえば、 'yield(a.id、a.label、 'parent_id - > a.parent_id、' order - > a.order、c.id。?、a = c.name ')' getTree.sortBy r => r( 'parent_id)〜r(' order)) ' – idonnie

+0

この回答はSlick 2.1でも有効ですか? IDEAは〜演算子を見つけられません。あるいは、私は魔法の輸入声明を見逃していますか? –

1

、私は仕事にこれを見つけた:(私のクエリにselectStatementを呼び出すことによって検証)

myQuery.sortBy(r => (r._3, r._4)) 

関連する問題