2017-01-04 2 views
3

여러 테이블과 복잡한 관계로 MySQL 데이터베이스를 만들었지 만, 증기 문서를 통해 구체적으로 모델 단계를 구축 할 때 테이블을 만드는 방법이 있습니다 (내 모델 클래스와 상호 작용할 것입니다) . 난 이미 (I는 신속한 컨텍스트 내에서 선언하는 방법을 모르겠어요.) DATETIME과 같은 외래 키 및 유형이 포함되어있는 테이블이 거기에 있기 때문에기존 데이터베이스에서 증기 앱을 만드는 방법은 무엇입니까?

static func prepare(_ database: Database) throws { 
    try database.create("users") { users in 
     users.id() 
     users.string("name") 
    } 
} 

그러나, 나는 그것을 사용하지 않으 증기로 이미 만든 테이블을 연결하는 방법?

답변

1

이것은 Vapor (또는 정확하게 Vapor의 데이터베이스 레벨 인 Fluent)가 다소 제한적입니다.

예, 기존 테이블을 사용할 수 있습니다. prepare(_:) 메서드에서는 테이블을 전혀 만들지 않고 구현을 비워 둘 수 있습니다. revert(_:)도 비워 두어야합니다.

init(node:in:) 초기화 방법과 makeNode(context:) 방법에서 테이블의 열 이름과 유형과 Swift 모델의 속성 유형을 매핑해야합니다.

0

모델 개체 클래스 (여기서 사용자)에서 prepare 메서드는 코드에서 테이블을 명시 적으로 만들 필요가 없으므로 구현되지 않은 상태로 남겨 둘 수 있습니다. 그래서

static func prepare(_ database: Database) throws { 
    ... 
} 

처럼해야하지만

final class User: Model { 
    static let entity = "users" 
    ... 
} 

그리고 마지막으로 다음과 같은 모델 클래스없이 DB에 테이블 이름을 매핑합니다 entity라는 정적 변수를 추가해야합니다, 우리는에 모델을 추가한다 물방울의 준비 배열 drop.preparations.append(User.self)

복잡한 관계가있는 데이터베이스에서 기존 테이블을 사용할 수 있도록 Vapor의 모델 개체에서 매핑합니다.

관련 문제