Rumah >rangka kerja php >YII >Bagaimanakah saya menggunakan migrasi pangkalan data Yii untuk menguruskan perubahan skema?
Artikel ini menerangkan sistem penghijrahan pangkalan data YII untuk menguruskan perubahan skema. Butirannya membuat, memohon, dan membalikkan migrasi menggunakan arahan YII yang berhijrah, menekankan perubahan atom, kaedah terbalik ()/turun (), dan fungsi penolong.
Migrasi pangkalan data Yii menyediakan cara yang kukuh dan dikawal versi untuk menguruskan perubahan pada skema pangkalan data anda. Konsep teras melibatkan mewujudkan kelas penghijrahan, masing -masing mewakili perubahan atom tunggal ke pangkalan data anda. Perubahan ini biasanya penambahan, pengubahsuaian, atau penghapusan jadual, lajur, indeks, dan hubungan.
Inilah pecahan proses:
yii migrate/create
untuk menghasilkan fail penghijrahan baru. Perintah ini mendorong anda untuk nama, yang kemudiannya digunakan untuk membuat kelas PHP yang memanjangkan yii\db\Migration
. Kelas ini akan mengandungi up()
dan down()
kaedah.up()
dan down()
: Kaedah up()
mengandungi pernyataan SQL untuk memohon perubahan skema. Kaedah down()
mengandungi pernyataan SQL terbalik untuk membatalkan perubahan ini, penting untuk rollbacks. YII menyediakan kaedah penolong seperti createTable()
, addColumn()
, dropColumn()
, dropTable()
, dan sebagainya, menjadikannya lebih mudah untuk menulis migrasi.yii migrate
menggunakan semua migrasi yang belum selesai (migrasi yang belum digunakan, berdasarkan jadual sejarah penghijrahan). Ini melaksanakan kaedah up()
migrasi yang tidak diterapkan.yii migrate/down
membalikkan penghijrahan yang paling baru -baru ini dengan melaksanakan kaedah down()
. Anda boleh menentukan nombor untuk mengembalikan pelbagai penghijrahan. Contoh: Migrasi untuk membuat jadual users
mungkin kelihatan seperti ini:
<code class="php"><?php use yii\db\Migration; class m231027_100000_create_users_table extends Migration { public function up() { $this->createTable('users', [ 'id' => $this->primaryKey(), 'username' => $this->string(255)->notNull()->unique(), 'email' => $this->string(255)->notNull()->unique(), 'password_hash' => $this->string(255)->notNull(), 'created_at' => $this->integer()->notNull(), 'updated_at' => $this->integer()->notNull(), ]); } public function down() { $this->dropTable('users'); } }</code>
Menulis migrasi pangkalan data yang berkesan adalah kunci untuk mengekalkan skema pangkalan data yang bersih dan terkawal. Berikut adalah beberapa amalan terbaik:
m231027_100000_add_user_profile_table
). Awalan timestamp memastikan pesanan yang betul.down()
: sentiasa melaksanakan kaedah down()
untuk membalikkan perubahan yang dibuat dalam up()
. Ini penting untuk rollbacks dan memastikan integriti data. Uji kaedah down()
anda dengan teliti.createTable()
, addColumn()
, addForeignKey()
, dll.) Daripada menulis SQL mentah. Ini meningkatkan kebolehbacaan dan mudah alih di seluruh sistem pangkalan data yang berbeza.Konflik boleh timbul jika beberapa pemaju bekerja serentak pada migrasi atau jika penghijrahan gagal di tengah -tengah. YII menyediakan mekanisme untuk mengendalikan situasi ini:
yii migrate/down
membolehkan penghijrahan yang kembali ke keadaan terdahulu, membatalkan perubahan yang tidak diingini atau gagal.up()
gagal, keseluruhan penghijrahan dilancarkan secara automatik, memelihara integriti data.Walaupun terutamanya yang dimaksudkan untuk perubahan skema, migrasi Yii dapat diperluaskan untuk mengendalikan pembenihan data. Walau bagaimanapun, ia secara amnya dianggap amalan terbaik untuk memisahkan pembenihan data dari migrasi skema.
Inilah sebabnya:
Walau bagaimanapun, jika anda mesti memasukkan pembenihan, anda boleh menambah logik penyisipan data dalam kaedah up()
anda. Ingatlah untuk memasukkan penghapusan data yang sepadan dalam kaedah down()
untuk membolehkan rollbacks yang betul. Pendekatan ini umumnya tidak digalakkan untuk dataset besar. Pertimbangkan untuk menggunakan yii migrate/create
untuk menjana migrasi berasingan khusus untuk pembenihan data, menjadikan proses lebih teratur. Sebagai alternatif, pertimbangkan untuk menggunakan data perlawanan atau skrip pembenihan data khusus untuk set data yang lebih besar dan lebih kompleks.
Atas ialah kandungan terperinci Bagaimanakah saya menggunakan migrasi pangkalan data Yii untuk menguruskan perubahan skema?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!