2017-10-26 13 views
2

Person 테이블과 Events 테이블이 Attends 테이블을 통해 관련되어있어 특정 이벤트 (예 : 특정 역할)에 참석해야한다는 사실을 기록하고자 할 때 Attends 테이블이 존재합니다. 주최자 등) :Vapor?에서 조인 된 테이블의 필드에 액세스 할 수 있습니까?

Persons 
+----+-------------+ 
| id | surname  | 
+----+-------------+ 
| 1 | Robinson | 
| 2 | Savage  | 
... 

Events 
+----+-----------------------+ 
| id | name     | 
+----+-----------------------+ 
| 1 | Half Term Competition | 
| 2 | Christmas Competition | 
... 

attends 
+---------+----------+--------+ 
| eventId | personId | roleId | 
+---------+----------+--------+ 
|  1 |  1 |  1 | 
|  1 |  2 |  6 | 
... 

가 나는 것입니다 사람의 목록과 그들이 행사에서하고있는 생산 싶지만 증기에) (.join 사용하여 수행하는 방법을 찾을 수 없습니다 질문. 조인 된 테이블을 필터링 할 수 있지만 필드를 포함하지 않는 것 같습니다. 나는 뭔가를 놓쳤는가 아니면 불가능한가? 내가 올바른 사람의 기록을 얻을

Person.join(Attends.self).filter(Attends.self,Event.foreignIdKey == eventId) 

하지만, 자신의 '역할'조인에 참석 기록에서 무엇 액세스 할 수있는 방법 :

나는의 주제에 많은 변화를 시도했습니다.

원시 쿼리를 수행하면 노드 표현이 반환됩니다. 나는 Leaf를 사용하여 이것을 쉽게 볼 수 있지만, 이미지 등이있는 PDF를 생성하는 방식으로 반복하는 방법은 분명하지 않습니다.

+0

Fluent _parent-child relations_ 및 _sibling relations_에 대한 Vapor 2 + Swift 4 예제 구현은 github에서 https://github.com/VaporExamplesLab/ServerSideSwift_J_RelationsAwt에 있습니다. –

답변

1

Fluent relations에 대한 Vapor 문서는 아마도 당신이 찾고있는 것일 것입니다. 에 대한.

내가, 당신이 많은 (형제 자매) 관계에 많은을 사용하고 말할 수있는, 그래서이 코드는 당신이 원하는 될 일에서

:

let roles = person.roles.all() 

:

extension Persion { 
    var roles: Siblings<Persion, Role, Pivot<Person, Role>> { 
     return siblings() 
    } 
} 

는 그런 역할을 수 나는 당신의 코드를 볼 수 없기 때문에 이것을 잘못 이해했을지도 모르지만, 그것은 당신에게 몇 가지 조언을 줄 것이다.