SORU
30 Kasım 2010, Salı


Profesyonel kurulum komut ALTER TABLE SQL kullanmadan

Jonathon Day diyor

< . p ^"güncellemeler şeklinde olmamalıdır SQL komutları". Rastlamak görmedim DDL ya. VİD o olamaz statments Profesyonel olmak. config üzerinden yürütülen yapılar.

(Soru How can I migrate configuration changes from development to production environment?)

Ekle//SQL güvenmeden bu şekilde bir tablo, ama/sütun ya da dizin değiştirmek kaldırmak için nasıl bilmek istiyorum? Hatta mümkün mü?

Ayrıca, ne diğer eylemleri yalnızca SQL yapılabilir?

CEVAP
30 Kasım 2010, Salı


Kur komut dosyası içinde bu tür yöntemleri kullanabilirsiniz:

  • Varien_Db_Ddl_Table Sınıf alanları, anahtarlar, $this->getConnection()->createTable($tableObject)ile birlikte ilişkiler yapılandırabileceğiniz yeni bir tablo oluşturmak için kullanın Örnek:

    /* @var $this Mage_Core_Model_Resource_Setup */
    $table = new Varien_Db_Ddl_Table();
    $table->setName($this->getTable('module/table'));
    $table->addColumn('id', Varien_Db_Ddl_Table::TYPE_INT, 10, 
                      array('unsigned' => true, 'primary' => true));
    
    $table->addColumn('name', Varien_Db_Ddl_Table::TYPE_VARCHAR, 255);
    $table->addIndex('name', 'name');
    $table->setOption('type', 'InnoDB');
    $table->setOption('charset', 'utf8');
    
    $this->getConnection()->createTable($table);
    
  • Bağlantı kur ($this->getConnection()) kullanma yöntemleri:

    • 5* *yöntemi tablo çıkmadan yeni bir sütun ekler. Bu parametreler vardır:
      • $tableName - değiştirilmesi gereken tablo adı
      • $columnName- eklenmesi gereken sütun adı
      • $definition - sütun tanımı (INT(10), DECIMAL(12,4), vs.)
    • 11* *yöntemi yeni bir kısıtlama yabancı anahtar oluşturur. Bu parametreler vardır
      • $fkName - yabancı anahtar adı benzersiz olmalıdır FK_ belirtmek musun diye başına veritabanı eklenecektir otomatik olarak önek
      • $tableName - Yabancı bir anahtar eklemek için tablo adı
      • $columnName - eğer karmaşık bir yabancı anahtar, virgül birden fazla sütun belirtmek için kullanın bir tablo yetkisine sahip olmalıdır sütun adı
      • $refTableName - ele alınacaktır şehirlerinde yabancı tablo adı
      • $refColumnName - sütun ad(lar) ı yabancı tablo
      • $onDelete sıra yabancı tabloda çıkarma eylemi. Boş dize (hiçbir şey yapma), cascade, set nullolabilir. Bu alan isteğe bağlıdır, ve eğer belirtilmişse, cascade değer kullanılacaktır.
      • $onUpdate satır yabancı tablosunda güncelleme anahtar eylem. Boş dize (hiçbir şey yapma), cascade, set nullolabilir. Bu alan isteğe bağlıdır, ve eğer belirtilmişse, cascade değer kullanılacaktır.
      • $purge yabancı anahtar ekledikten sonra satır (başvurulan bu recodrs örneğin kaldırmak) temizlik sağlayan bayrak
    • 27* *yöntemi bir tabloya dizin eklemek için kullanılır. Bu parametreler vardır:
      • $tableName - dizin eklenecek tablonun adı
      • $indexName - dizin adı
      • $fields sütun ad(lar) ı Endeksi kullanılmıştır
      • $indexType - dizin türü. Değerler mümkün: **, , *, *35unique*34 32*. Bu parametre isteğe bağlıdır, varsayılan değer index
    • 37* *yöntem mevcut tablodan sütun kaldırmak için kullanılır. Bu parametreler vardır:
      • $tableName - değiştirilmesi gereken tablo adı
      • $columnName- kaldırılması gereken sütunun adı
    • 40* *yöntem yabancı anahtarları kaldırmak için kullanılır. Bu parametreler vardır:
      • $tableName - yabancı bir anahtar kaldırmak için tablo adı
      • $fkName - yabancı anahtar adı
    • 43* *yöntem tablonun dizinler kaldırmak için kullanılır. Bu parametreler vardır:
      • $tableName - dizin çıkarılması gereken tablo adı
      • $keyName - dizin adı
    • 46* *yöntemi tabloda varolan bir sütun değiştirmek için kullanılır. Bu parametreler vardır:
      • $tableName - değiştirilmesi gereken tablo adı
      • $columnName- adlandırılması gereken sütunun adı
      • $definition - sütunun yeni bir tanım (INT(10), DECIMAL(12,4), vs.)
    • changeColumn yöntem ve tabloda varolan bir sütun değiştirmek yeniden adlandırmak için kullanılır. Bu parametreler vardır:
      • $tableName - değiştirilmesi gereken tablo adı
      • $oldColumnName- yeniden ve değiştirilmesi gereken sütun, eski adı
      • $newColumnName- sütunun yeni bir isim
      • $definition - sütunun yeni bir tanım (INT(10), DECIMAL(12,4), vs.)
    • 59* *yöntem, örneğin, Bunu için hali hazırda tablo motoru değiştirmek için kullanılır. Bu parametreler vardır:
      • $tableName - tablo adı
      • $engine - yeni motor adı (, *, **MyISAM62 64*, vb)

Ayrıca tableColumnExists yöntem sütunun varlığını kontrol etmek için kullanabilirsiniz.

Sizin için geçerli olan yöntem tam liste, doğrudan SQL sorguları kurtulmak yazılı değildir. Varien_Db_Adapter_Pdo_Mysql Zend_Db_Adapter_Abstract sınıflara daha fazla bulabilirsiniz.

Sınıf tanımı wich içine bakmak için tereddüt etmeyin kullanacağınız, kendiniz için ilginç bir çok şey bulabilirsiniz :)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FailArmy U

    FailArmy U

    29 AĞUSTOS 2009
  • Lin Steven

    Lin Steven

    17 EKİM 2006
  • Mark Hyder

    Mark Hyder

    6 EKİM 2011