증기가 새로운 기능을 추가 eagerLoad
하고 제거 하는 것 같습니다 alsoDecode
. 친자, 형제 자매 관계가있는 분들에게 편리합니다. 그러나 관계가없는 사람들에게는 적합하지 않습니다.
노드가 관계에 관여 할 수없는 (또는 방법을 모르는) 트리 구조를 구현하고 싶습니다. 노드에는 부모와 노드 인 많은 자식이 있습니다.
그래서이 구조에 대한 세 개의 테이블이 있습니다.
Tree:
| Field | Type |
| ----------- | --------------- |
| id | UUID? |
| name | String |
| nodes | [Node] |
| paths | [Path] |
Nodes:
| Field | Type |
| ------------- | -------------------------- |
| id | UUID? |
| type | NodeType(root, leaf, node) |
| tree | Tree |
Path:
| Field | Type |
| ------------ | --------- |
| id | UUID? |
| distance | Int |
| ancestorID | UUID |
| descendantID | UUID |
| tree | Tree |
문제는 내가하고 싶다면
SELECT Nodes.id, Nodes.type, Path.ancestorID from Nodes
INNER JOIN Path
ON Nodes.id = Path.descendantID
코드 작성 방법.
로 전송하도록 선택할 수도 있습니다 SQLDatabase
. 가져 SQLKit
오기도 확인하십시오 . Fluent 데이터베이스는 항상 SQLDatabase로 캐스팅 될 수 있습니다.
예 : 다음 let sqlDb = req.db as? SQLDatabase
과 같은 사용자 지정 쿼리를 사용할 수있는 권한을 제공합니다.sqlDb?.select().from("Nodes").join("Path", on: "Nodes.id = Path.descendantId").all()
SQLKit에 대한 자세한 내용은 https://github.com/vapor/sql-kit을 참조 하세요.
참조 : https://docs.vapor.codes/4.0/fluent/advanced/ (모든 Fluent 데이터베이스를 SQLDatabase로 캐스팅 할 수 있습니다. 여기에는 req.db, app.db, 마이그레이션에 전달 된 데이터베이스 등이 포함됩니다.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다