ডেটাবেস
কারণ বেশিরভাগ প্লাগইন webman-admin ইনস্টল করে, তাই এটি সরাসরি webman-admin
এর ডেটাবেস কনফিগারেশন পুনঃব্যবহারের জন্য সুপারিশ করা হয়।
মডেল ভিত্তি শ্রেণী plugin\admin\app\model\Base
ব্যবহার করলে এটি স্বয়ংক্রিয়ভাবে webman-admin
এর ডেটাবেস কনফিগারেশন ব্যবহার করবে।
<?php
namespace plugin\foo\app\model;
use plugin\admin\app\model\Base;
class Orders extends Base
{
/**
* মডেলের সাথে সংযুক্ত টেবিল।
*
* @var string
*/
protected $table = 'foo_orders';
/**
* টেবিলের সাথে সংযুক্ত প্রাইমারি কী।
*
* @var string
*/
protected $primaryKey = 'id';
}
এছাড়াও plugin.admin.mysql
এর মাধ্যমে webman-admin
এর ডেটাবেস পরিচালনা করা সম্ভব, যেমন
Db::connection('plugin.admin.mysql')->table('user')->first();
নিজস্ব ডেটাবেস ব্যবহার করা
প্লাগিনগুলি নিজেদের ডেটাবেস ব্যবহার করার জন্য বেছে নিতে পারে, যেমন plugin/foo/config/database.php
এর বিষয়বস্তু নিম্নরূপ
return [
'default' => 'mysql',
'connections' => [
'mysql' => [ // mysql সংযোগের নাম
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'ডেটাবেস',
'username' => 'ব্যবহারকারীর নাম',
'password' => 'পাসওয়ার্ড',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
'admin' => [ // admin সংযোগের নাম
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'ডেটাবেস',
'username' => 'ব্যবহারকারীর নাম',
'password' => 'পাসওয়ার্ড',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
],
];
উদ্ধৃতি দেওয়ার উপায় হল Db::connection('plugin.{প্লাগিন}.{সংযোগের নাম}');
উদাহরণস্বরূপ
use support\Db;
Db::connection('plugin.foo.mysql')->table('user')->first();
Db::connection('plugin.foo.admin')->table('admin')->first();
যদি প্রধান প্রকল্পের ডেটাবেস ব্যবহার করতে চান, তাহলে সরাসরি ব্যবহার করা যাবে, যেমন
use support\Db;
Db::table('user')->first();
// ধরুন প্রধান প্রকল্পে একটি admin সংযোগও কনফিগার করা হয়েছে
Db::connection('admin')->table('admin')->first();
মডেলের জন্য ডেটাবেস কনফিগার করা
আমরা মডেলের জন্য একটি Base ক্লাস তৈরি করতে পারি, Base ক্লাসে $connection
ব্যবহার করে প্লাগিনের নিজস্ব ডেটাবেস সংযোগ নির্ধারণ করতে পারি, যেমন
<?php
namespace plugin\foo\app\model;
use DateTimeInterface;
use support\Model;
class Base extends Model
{
/**
* @var string
*/
protected $connection = 'plugin.foo.mysql';
}
এভাবে প্লাগিনের সমস্ত মডেল Base থেকে উত্তরাধিকারী হবে, এটি স্বয়ংক্রিয়ভাবে প্লাগিনের নিজের ডেটাবেস ব্যবহার করবে।
স্বয়ংক্রিয়ভাবে ডেটাবেস আমদানি করা
php webman app-plugin:create foo
চালালে foo প্লাগিনটি স্বয়ংক্রিয়ভাবে তৈরি হবে, যার মধ্যে থাকবে plugin/foo/api/Install.php
এবং plugin/foo/install.sql
।
টিপ
যদিinstall.sql
ফাইল তৈরি না হয় তবে দয়া করে চেষ্টা করুনwebman/console
আপগ্রেড করুন, কমান্ড হলcomposer require webman/console ^1.3.6
প্লাগিন ইনস্টল করার সময় ডেটাবেস আমদানি
প্লাগিন ইনস্টল করার সময় Install.php
এর install
পদ্ধতি কার্যকর হবে, এই পদ্ধতি install.sql
এর SQL বিবৃতিগুলি স্বয়ংক্রিয়ভাবে আমদানি করবে, যাতে ডেটাবেস টেবিল স্বয়ংক্রিয়ভাবে আমদানি করা যায়।
install.sql
ফাইলের বিষয়বস্তু ডেটাবেস টেবিল তৈরি করার জন্য এবং টেবিলের ইতিহাস সংশোধন SQL বিবৃতিগুলি রয়েছে, মনে রাখবেন প্রতিটি বিবৃতিকে ;
দিয়ে শেষ করতে হবে, যেমন
CREATE TABLE `foo_orders` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'প্রাথমিক কী',
`order_id` varchar(50) NOT NULL COMMENT 'অর্ডার আইডি',
`user_id` int NOT NULL COMMENT 'ব্যবহারকারী আইডি',
`total_amount` decimal(10,2) NOT NULL COMMENT 'পরিশোধিত পরিমাণ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='অর্ডার';
CREATE TABLE `foo_goods` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'প্রাথমিক কী',
`name` varchar(50) NOT NULL COMMENT 'নাম',
`price` int NOT NULL COMMENT 'দাম',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='পণ্য';
ডেটাবেস সংযোগ পরিবর্তন করুন
install.sql
আমদানির লক্ষ্যে ডেটাবেসটি ডিফল্টভাবে webman-admin
ডেটাবেস। যদি অন্য ডেটাবেসে আমদানি করতে চান, তাহলে Install.php
এ $connection
গুণটি পরিবর্তন করতে পারেন, যেমন
<?php
class Install
{
// প্লাগিনের নিজের ডেটাবেস নির্ধারণ
protected static $connection = 'plugin.admin.mysql';
// ...
}
পরীক্ষা
php webman app-plugin:install foo
চালিয়ে প্লাগিনটি ইনস্টল করুন, তারপর ডেটাবেসটি দেখুন, আপনি দেখতে পাবেন foo_orders
এবং foo_goods
টেবিলগুলি ইতিমধ্যেই তৈরি হয়েছে।
প্লাগিন আপগ্রেড করার সময় টেবিলের রূপরেখা পরিবর্তন
কখনও কখনও প্লাগিনের আপগ্রেডের জন্য নতুন টেবিল তৈরি করা বা টেবিলের রূপরেখা পরিবর্তন করা প্রয়োজন, সোজাসুজি install.sql
এর শেষে সঠিক বিবৃতিগুলি যোগ করুন, মনে রাখুন প্রতিটি বিবৃতির পিছনে ;
থাকতে হবে, যেমন একটি foo_user
টেবিল যোগ করা এবং foo_orders
টেবিলে একটি status
ক্ষেত্র বৃদ্ধি করা
CREATE TABLE `foo_orders` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'প্রাথমিক কী',
`order_id` varchar(50) NOT NULL COMMENT 'অর্ডার আইডি',
`user_id` int NOT NULL COMMENT 'ব্যবহারকারী আইডি',
`total_amount` decimal(10,2) NOT NULL COMMENT 'পরিশোধিত পরিমাণ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='অর্ডার';
CREATE TABLE `foo_goods` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'প্রাথমিক কী',
`name` varchar(50) NOT NULL COMMENT 'নাম',
`price` int NOT NULL COMMENT 'দাম',
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='পণ্য';
CREATE TABLE `foo_user` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'প্রাথমিক কী',
`name` varchar(50) NOT NULL COMMENT 'নাম'
PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='ব্যবহারকারী';
ALTER TABLE `foo_orders` ADD `status` tinyint NOT NULL DEFAULT 0 COMMENT 'স্থিতি';
আপগ্রেডের সময় Install.php
এর update
পদ্ধতি কার্যকর করা হবে, এই পদ্ধতিটি install.sql
এর বিবৃতিগুলিও কার্যকর করবে, যদি নতুন বিবৃতি থাকে তবে নতুন বিবৃতি কার্যকর হবে, যদি তা পুরানো বিবৃতি হয় তবে এটি বাদ দেওয়া হবে, যাতে আপগ্রেড ডেটাবেসের পরিবর্তনগুলি সম্পন্ন হয়।
প্লাগিন আনইন্সটল করার সময় ডেটাবেস মুছে ফেলা
প্লাগিন আনইন্সটল করার সময় Install.php
এর uninstall
পদ্ধতি কল করা হবে, এটি স্বয়ংক্রিয়ভাবে বিশ্লেষণ করবে install.sql
এ কোন কোন টেবিল নির্মাণের বিবৃতি রয়েছে এবং স্বয়ংক্রিয়ভাবে এই টেবিলগুলি মুছে ফেলবে, যাতে প্লাগিন আনইন্সটল করার সময় ডেটাবেস টেবিলগুলি মুছে ফেলা যায়।
যদি আপনি আনইন্সটল করার সময় শুধুমাত্র আপনার নিজস্ব uninstall.sql
চালাতে চান এবং স্বয়ংক্রিয়ভাবে টেবিল মুছতে চান না, তবে কেবল plugin/প্লাগিনের নাম/uninstall.sql
তৈরি করুন, তাহলে uninstall
পদ্ধতি শুধুমাত্র uninstall.sql
ফাইলের বিবৃতিগুলি কার্যকর করবে।