질문을 삭제하지 말아주세요.!
 
1
0
-1

1. SQL 파일을 스키마빌더를 통해 PHP로 정의하고 변경점(버전)관리를 할 수 있는 것이 마이그레이션이다.

2. 그렇다면 엘로퀸트는 이미 구조화 된 DB에 프로세스 상 작업을 할 때 사용한다.


위 두가지 정의로 이해하여도 괜찮은가요?

    CommentAdd your comment...

    1 answer

    1.  
      1
      0
      -1

      예 대체로 맞습니다.

      1. DDL(Data Definition Language, e.g. CREATE TABLE ...)을 PHP 코드로 써 놓은 것입니다. DDL도 소스 저장소에 올려 최종 DDL 을 관리할 수 있지만, 변경 이력을 현재 커밋에서 볼 수는 없습니다. 가령 문을 닫고, 열고, 닫고, 열고라는 이력이 있다면, DDL은 열려 있는 상태만 최종으로 가지고 있지만, 마이그레이션은 그간의 행동을 그대로 반복합니다. 설명이 어려운데, 직접 해 보시면 금방 이해됩니다.

      2. 엘로퀀트는 DML(Data Manipulation Language) + ORM 구현체입니다. 테이블은 수평으로 컬럼이 늘어져 있는 구조라면, ORM은 그 테이블을 수직으로 세워서 클래스 멤버 변수로 넣어 놓은 것이라 생각하시면 됩니다. SELECT * FROM users WHERE id = 1;라는 SQL 구문을 $user = App\User::find(1); 이란 구문으로 대체할 수 있습니다. 테이블 컬럼의 값들이 $user란 객체의 애트리뷰트로 채워져 있으므로, $user→id; // 1 식으로 PHP 코드에서 테이블 데이터를 써내서 코드를 짤 수 있습니다.

      어디든 안 그렇겠습니까마는, 익숙해 지고 나면 여러 가지 논쟁들이 보이기 시작할 겁니다. 하지만, 지금은 다른 엉뚱한 것 보지 마시고, 내 생산성을 높여 주는 좋은 거라 생각하고 무조건 익히시길 바랍니다. Rails ActiveRecord, Django ORM, 결국은 모두 같은겁니다(JPA와는 결이 조금 다릅니다~ PHP의 JPA 구현은 Doctrine인데 지금은 엘로퀀트 익힌 후 보시길).

      1. Chris Ray

        감사합니다.

      CommentAdd your comment...