CakePHP에서 모델의 데이터베이스를 휴대용으로 만드는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/603578

문제

나는 케이크에 익숙하지 않습니다. 그래서 여기 내 질문이 있습니다. 우리는 MySQL에서 앱을 개발하고 있지만 결국 MSSQL 또는 Oracle에 배포해야 할 수도 있습니다. 기본 키에 이상한 문제가 없도록하려면 어떻게해야합니까? MySQL에서는 자동 증분 열이지만 Oracle의 IIRC는 시퀀스를 사용해야합니다 ...이를 투명한 변경으로 만드는 방법이 있습니까? 나는 그것을 생각하고 있습니까?

CakePHP 앱에서 데이터베이스 공급 업체를 전환 한 경험이 있습니까? 시선을 사로 잡을 포인터 나 물건이 있습니까?

도움이 되었습니까?

해결책

케이크 데이터베이스 구성 파일에서 드라이버를 선택합니다 ( http://book.cakephp.org/view/40/database-configuration). 그런 다음 필드 이름으로 pk (mysql을 사용하는 경우 a_i 열이 될 것)를 설정하면 id, 케이크는 자동으로 auto_increment 삽입을 처리합니다. 나는 (NB : 케이크가 다른 것을 시도하지 않았다) 케이크가 Oracle과 같은 A_I 열을 돌볼 것이라고 가정합니다.

Cake는 자체 DB 추상화 레이어를 사용하지만 포함 된 추상화는 상당히 많이 커버되며 지정된대로 수행됩니다 (즉, 자동 증분 제품을 처리합니다).

요컨대, 당신은 아마도 지나치게 생각할 것입니다. 즉, 나는 작은 케이크 앱을 조롱 한 다음 그 뒤에 데이터베이스를 전환하려고합니다 (DB 구성을 변경하면 앱이 자동으로 전환해야합니다).

HTH, 트래비스

다른 팁

다음 관행은 저에게 좋습니다

케이크 스키마를 사용합니다 (각 모델 그룹에 대해 1 개의 스키마 파일을 설정하는 경향이 있습니다. 즉, 사용자, 역할, 프로필은 모두 하나의 사용자 스키마 파일에있을 수 있음)

또한 Debuggable.com Fixturesshell 사용을 살펴보십시오. 테스트 케이스 비품을 라이브 데이터베이스로 가져올 수 있습니다. 스키마 파일에서 초기 사용자 그룹과 역할을 설정하는 데 적합합니다.

또한 int (#) 케이크 대신 'ID'필드를 Varchar (36)로 설정하면 자동으로 UUID 스타일 ID를 사용합니다. 즉, 데이터를 다른 애플리케이션 또는 서버로 이동 해야하는 경우 데이터에 ID 값 충돌 가능성이 훨씬 낮습니다.

Fixtures Shell에는 또한 UUID를 생성하기위한 명령 줄 도구가 있습니다 (따라서 삽입을위한 픽스처의 $ Records 변수에 추가 할 수 있습니다).

요약하면 -Cakeschema Schemas Shell, Debuggable.com의 비품 쉘 및 ID의 UUID 값을 사용하며 휴대용 구조 제작 도구, 휴대용 데이터 삽입 도구 및 휴대용 ID 필드 형식을 제공해야합니다.

http://github.com/felixge/debuggable-scraps/tree/fd0e5ad625cb21f5ba16e6b186821a5774089ac7/cakephp/shells/fixtures

http://api.cakephp.org/class/schema-shell

DB를 관리하려면 "케이크 스키마"를 사용해야합니다. 데이터베이스를 만들 때 모든 DB 특정 제품을 처리합니다.

http://book.cakephp.org/view/735/generating-and-using-schema-files

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top