PHP में डेटाबेस माइग्रेशन: आधुनिक उपकरण और अभ्यास
डेटाबेस माइग्रेशन PHP में आधुनिक विकास का एक अनिवार्य हिस्सा हैं। वे डेवलपर टीमों को डेटाबेस स्कीमा में बदलावों को सिंक्रोनाइज़ करने, परिवर्तनों के इतिहास को ट्रैक करने और विभिन्न वातावरणों (स्थानीय वातावरण, स्टेजिंग, प्रोडक्शन) पर स्वचालित रूप से लागू करने की अनुमति देते हैं। इस लेख में, हम PHP में माइग्रेशन के लिए मुख्य लाइब्रेरीज़ और उपकरणों, उनकी स्थापना, कॉन्फ़िगरेशन और उपयोग के उदाहरणों पर विचार करेंगे।
माइग्रेशन क्या हैं और उनकी आवश्यकता क्यों है?
डेटाबेस माइग्रेशन एक स्क्रिप्ट है जो स्कीमा में बदलाव का वर्णन करती है: तालिका बनाना, कॉलम जोड़ना/हटाना, इंडेक्स, विदेशी कुंजियाँ। माइग्रेशन अनुमति देते हैं:
- वर्जनिंग एप्लिकेशन कोड के साथ DB संरचना में बदलावों की।
- स्वचालित करना नए सर्वरों पर डिप्लॉयमेंट।
- वापस लेना आवश्यकता पड़ने पर बदलावों को।
- टीम में काम करना बिना विवादों के।
PHP में माइग्रेशन के लिए लोकप्रिय लाइब्रेरीज़
1. Phinx (robmorgan/phinx)
Phinx माइग्रेशन के लिए सबसे लोकप्रिय स्वतंत्र लाइब्रेरीज़ में से एक है। यह किसी विशिष्ट फ्रेमवर्क से बंधी नहीं है और MySQL, PostgreSQL, SQLite, SQL Server को सपोर्ट करती है।
Composer के माध्यम से स्थापना:
composer require robmorgan/phinxकॉन्फ़िगरेशन फ़ाइल phinx.yml बनाना:
paths: migrations: '%%PHINX_CONFIG_DIR%%/db/migrations' seeds: '%%PHINX_CONFIG_DIR%%/db/seeds'
environments: default_migration_table: phinxlog default_database: development development: adapter: mysql host: localhost name: myapp_db user: root pass: '' port: 3306 charset: utf8माइग्रेशन का उदाहरण (users तालिका बनाना):
<?php
use Phinx\\Migration\\AbstractMigration;
class CreateUsersTable extends AbstractMigration{ public function change() { $table = $this->table('users', ['id' => false, 'primary_key' => ['id']]); $table->addColumn('id', 'biginteger', ['identity' => true]) ->addColumn('username', 'string', ['limit' => 50]) ->addColumn('email', 'string', ['limit' => 100]) ->addColumn('created_at', 'datetime') ->addColumn('updated_at', 'datetime', ['null' => true]) ->addIndex(['email'], ['unique' => true]) ->create(); }}माइग्रेशन चलाना:
vendor/bin/phinx migrate -e development2. Doctrine Migrations (doctrine/migrations)
Doctrine Migrations Doctrine ORM इकोसिस्टम का हिस्सा है। यह उन प्रोजेक्ट्स के लिए आदर्श है जो पहले से Doctrine का उपयोग कर रहे हैं। यह सभी लोकप्रिय DBMS को सपोर्ट करता है।
स्थापना:
composer require doctrine/migrationsकॉन्फ़िगरेशन (migrations.php):
<?phpreturn [ 'table_storage' => [ 'table_name' => 'doctrine_migration_versions', ], 'migrations_paths' => [ 'App\\Migrations' => './migrations', ], 'all_or_nothing' => true, 'transactional' => true, 'check_database_platform' => true,];माइग्रेशन का उदाहरण:
<?php
namespace App\\Migrations;
use Doctrine\\DBAL\\Schema\\Schema;use Doctrine\\Migrations\\AbstractMigration;
class Version20240101000000 extends AbstractMigration{ public function up(Schema $schema): void { $table = $schema->createTable('products'); $table->addColumn('id', 'integer', ['autoincrement' => true]); $table->addColumn('name', 'string', ['length' => 255]); $table->addColumn('price', 'decimal', ['precision' => 10, 'scale' => 2]); $table->se