2017-10-28 13 views
1

の列にスリック3.2使用して、以下の:スリック3.2:フィルタが所与の左接合テーブル

val contacts = TableQuery[ContactTable] 
val phones = TableQuery[PhoneTable] 

val query = contacts.joinLeft(phones).on(_.contact_id === _.id) 

query.filter{ case (contact, maybePhone) => ... } 

maybePhoneが担当[オプション[PhoneTable]]です。どのようにプロパティをフィルタリングできますか? (maybePhone.containsような何か(_ areaCode === "212")。。)

+1

あなたが結合テーブルの列の値でフィルタリングする場合は、なぜ最初に内部結合の代わりに 'leftJoin'を使用しますか? – SergGr

+1

良い質問です。 APIが再利用のために公開する汎用ベースクエリを定義しています。一部の呼び出し元は、左の結合テーブルまたはその値を気にしません。他の人は時々それをフィルタリングしたいと思うでしょう。 – FullTimeCoderPartTimeSysAdmin

答えて

1

てみマッピング:

query.filter{ case (contact, maybePhone) => maybePhone.map(_.areaCode === "212") } 
+1

それは動作します!どのように私はそれを逃したのか分からない。 (決して睡眠を奪われている間はコードしないでください)ありがとう! – FullTimeCoderPartTimeSysAdmin

関連する問題