복붙노트

[SQL] SQL을 사용하지 않고 젠토 설치 스크립트에서 ALTER 표

SQL

SQL을 사용하지 않고 젠토 설치 스크립트에서 ALTER 표

조나단 데이는 말한다

(I 생산 환경 개발에서 구성 변경을 마이그레이션 할 수있는 방법 질문에서?)

나는,하지만 SQL에 의존하지 않고 / 수정 /이 방식으로 테이블에서 /에 열 또는 인덱스를 제거 추가하는 방법을 가장 잘 알고 싶습니다? 심지어 수 있습니까?

또한, 어떤 다른 행동은 SQL에서 할 수 있는가?

해결법

  1. ==============================

    1.당신은 당신의 설정 스크립트 내에서 같은 방법을 사용할 수 있습니다 :

    당신은 당신의 설정 스크립트 내에서 같은 방법을 사용할 수 있습니다 :

    또한 당신은 칼럼의 존재를 확인하기 위해 tableColumnExists 방법을 사용할 수 있습니다.

    그것은 쓰기 직접 SQL 쿼리를 제거하기 위해, 당신을 위해 사용할 수있는 방법의 전체 목록이 아닙니다. 당신은 Varien_Db_Adapter_Pdo_Mysql 및 Zend_Db_Adapter_Abstract 클래스에서보다 자세한 내용을보실 수 있습니다.

    당신이 사용하려는 클래스 정의를 조사하는 것을 망설이지 말라, 당신은 자신에 대한 흥미로운 것들을 많이 찾을 수 있습니다 :)

  2. ==============================

    2.어떤 젠토 업데이트가 SQL을 포함하지 않아야한다는 아이디어는 아이디어를 그 기반으로

    어떤 젠토 업데이트가 SQL을 포함하지 않아야한다는 아이디어는 아이디어를 그 기반으로

    그래서, 문제는 ALTER TABLE 문에 직접 데이터 저장소를 변경합니다. 당신이 위의 두 가지 아이디어를 독점적으로 가입 한 경우, 당신은 데이터 저장소를 변경 않을 것입니다. (열 또는 독점적 EAV 모델을 사용하여 인덱스 부가 수단의 변경을 관리하기 위해 설치 리소스를 사용하고 젠토의 색인화를 수용하는 경우).

    당신이 변경하거나 일부 핵심 젠토 기능 (제품, 리뷰 등)에 추가하는 경우 엄지 손가락의 좋은 일반적인 규칙은, 당신은있는 거 기꺼이 조심스럽게 업그레이드 과정을 관리 할 수없는 한 직접 데이터베이스 구조를 변경 멀리.

    당신은 당신이 생성하고 설정 자료를 통해 테이블을 변경하려면 SQL 어떤 새로운 객체 및 기능 사용을 구축하는 경우. 당신은 설치 / 업그레이드 파일을 보면 당신은 핵심 젠토 팀이 스스로 않는 것을 볼 수 있습니다.

  3. ==============================

    3.테이블을 변경하고 외래 키에 열을 추가하려면,이 성공적으로 사용 젠토 CE의 v1.6.1.0을 사용하고 있습니다 :

    테이블을 변경하고 외래 키에 열을 추가하려면,이 성공적으로 사용 젠토 CE의 v1.6.1.0을 사용하고 있습니다 :

    // Alter table to add column
    $installer->getConnection()
    
            ->addColumn(
                $installer->getTable('modulekey/model'), 
                'column_name',  
                array(
                    'type'      => Varien_Db_Ddl_Table::TYPE_INTEGER,
                    'length'    => null,
                    'unsigned'  => true,
                    'nullable'  => true,
                    'comment'   => 'Foreign key'
                )
            );
    
    // Add foreign key constraint
    $installer->getConnection()
    
            ->addForeignKey(
                $installer->getFkName( 
                    'modulekey/model',  'column_name',
                    'modulekey/foreign_model',  'foreign_column_name'
                ),
                $installer->getTable('modulekey/model'), 
                'column_name',
                $installer->getTable('modulekey/foreign_model'),
                'foreign_column_name',
                Varien_Db_Ddl_Table::ACTION_SET_NULL, 
                Varien_Db_Ddl_Table::ACTION_SET_NULL
            );
    

    사람들은 Varien_Db_Adapter_Pdo_Mysql에서 방법이 있습니다.

  4. from https://stackoverflow.com/questions/4315660/alter-table-in-magento-setup-script-without-using-sql by cc-by-sa and MIT license