Yii - डेटाबेस एक्सेस
Yii DAO (डेटाबेस एक्सेस ऑब्जेक्ट) डेटाबेस तक पहुँचने के लिए एक एपीआई प्रदान करता है। यह अन्य डेटाबेस एक्सेस विधियों के लिए नींव के रूप में भी कार्य करता है: सक्रिय रिकॉर्ड और क्वेरी बिल्डर।
Yii DAO निम्नलिखित डेटाबेस का समर्थन करता है -
- MySQL
- MSSQL
- SQLite
- MariaDB
- PostgreSQL
- ORACLE
- CUBRID
डेटाबेस कनेक्शन बनाना
Step 1 - डेटाबेस कनेक्शन बनाने के लिए, आपको yii \ db \ Connection क्लास का एक उदाहरण बनाना होगा।
$mydb = new yii\db\Connection([
'dsn' => 'mysql:host=localhost;dbname=mydb',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
]);
एक सामान्य अभ्यास एप्लिकेशन घटकों के अंदर DB कनेक्शन को कॉन्फ़िगर करना है। उदाहरण के लिए, मूल एप्लिकेशन टेम्प्लेट में DB कनेक्शन कॉन्फ़िगरेशन स्थित हैconfig/db.php फ़ाइल को निम्न कोड में दिखाया गया है।
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '123574896',
'charset' => 'utf8',
];
?>
Step 2 - डीबी कनेक्शन का उपयोग करने के लिए आप इस अभिव्यक्ति का उपयोग कर सकते हैं।
Yii::$app->db
DB कनेक्शन को कॉन्फ़िगर करने के लिए, आपको इसके माध्यम से अपना DSN (डेटा स्रोत नाम) निर्दिष्ट करना चाहिए dsnसंपत्ति। DSN प्रारूप विभिन्न डेटाबेस के लिए भिन्न होता है -
MySQL, MariaDB - mysql: host = localhost; dbname = mydb
PostgreSQL - pgsql: host = localhost; पोर्ट = 5432; dbname = mydb
SQLite - sqlite: / path / to / db / file
MS SQL Server (via sqlsrv driver) - sqlsrv: सर्वर = लोकलहोस्ट; डेटाबेस = mydb
MS SQL Server (via mssql driver) - mssql: host = localhost; dbname = mydb
MS SQL Server (via dblib driver) - dblib: host = localhost; dbname = mydb
CUBRID - घनाभ: dbname = mydb; host = localhost; पोर्ट = 33000
Oracle - Ioci: dbname = // localhost: 1521 / mydb
कार्रवाई में डेटाबेस क्वेरी दिखाने के लिए, हमें डेटा की आवश्यकता है।
डीबी की तैयारी
Step 1- एक नया डेटाबेस बनाएँ। डेटाबेस को निम्नलिखित दो तरीकों से तैयार किया जा सकता है।
टर्मिनल में mysql -u root -p चलाएं ।
CREAT DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci के माध्यम से एक नया डेटाबेस बनाएं ;
Step 2 - में डेटाबेस कनेक्शन को कॉन्फ़िगर करें config/db.phpफ़ाइल। वर्तमान में उपयोग किए गए सिस्टम के लिए निम्न कॉन्फ़िगरेशन है।
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '12345',
'charset' => 'utf8',
];
?>
Step 3 - रूट फोल्डर के अंदर run ./yii migrate/create test_table। यह कमांड हमारे DB को प्रबंधित करने के लिए एक डेटाबेस माइग्रेशन बनाएगी। माइग्रेशन फ़ाइल में दिखाई देना चाहिएmigrations प्रोजेक्ट रूट का फ़ोल्डर।
Step 4 - माइग्रेशन फ़ाइल संशोधित करें (m160106_163154_test_table.php इस मामले में) इस तरह से।
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160106_163154_test_table extends Migration {
public function safeUp() {
$this->createTable("user", [ "id" => Schema::TYPE_PK, "name" => Schema::TYPE_STRING, "email" => Schema::TYPE_STRING, ]); $this->batchInsert("user", ["name", "email"], [
["User1", "[email protected]"],
["User2", "[email protected]"],
["User3", "[email protected]"],
["User4", "[email protected]"],
["User5", "[email protected]"],
["User6", "[email protected]"],
["User7", "[email protected]"],
["User8", "[email protected]"],
["User9", "[email protected]"],
["User10", "[email protected]"],
["User11", "[email protected]"],
]);
}
public function safeDown() {
$this->dropTable('user');
}
}
?>
उपरोक्त प्रवासन एक बनाता है userइन फ़ील्ड्स के साथ तालिका: आईडी, नाम और ईमेल। यह कुछ डेमो उपयोगकर्ताओं को भी जोड़ता है।
Step 5 - प्रोजेक्ट रूट के अंदर run ./yii migrate डेटाबेस में माइग्रेशन लागू करने के लिए।
Step 6 - अब, हमें अपने लिए एक मॉडल बनाने की आवश्यकता है userतालिका। सादगी के लिए, हम उपयोग करने जा रहे हैंGiiकोड जनरेशन टूल। इसे खोलोurl: http://localhost:8080/index.php?r=gii। फिर, "मॉडल जनरेटर" हेडर के तहत "प्रारंभ" बटन पर क्लिक करें। तालिका नाम ("उपयोगकर्ता") और मॉडल वर्ग ("MyUser") भरें, "पूर्वावलोकन" बटन पर क्लिक करें और अंत में, "जनरेट" बटन पर क्लिक करें।
MyUser मॉडल को मॉडल निर्देशिका में दिखाई देना चाहिए।