2017-10-28 18 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