نحوه ی دسترسی به پایگاه داده یا database ها در فریمورک Yii
در فریمورک Yii ، شی DAO مخفف Database Access Object یک API ، برای دسترسی به database فراهم می کند. همچنین آن به عنوان پایه و اساسی برای دیگر متد های دسترسی به پایگاه داده عمل می کند.متدهایی چون : active record و query builder.
Yii DAO از پایگاه های زیر پشتیبانی می کند :
- MySQL
- MSSQL
- SQLite
- MariaDB
- PostgreSQL
- ORACLE
- CUBRID
ایجاد Connection برای database
مرحله 1 - برای ایجاد connection برای پایگاه داده، شما باید یک نمونه از کلاس yii\db\Connectionرا ایجاد کنید.
$mydb = new yii\db\Connection([
'dsn' => 'mysql:host=localhost;dbname=mydb',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
]);
یک تمرین ساده می تواند پیکربندی یک DB connection در داخل component های برنامه باشد. به عنوان مثال، درقالب پایه ی برنامه، پیکربندی DB connection در فایل config/db.php قرار دارد. کد زیر بیانگر این مطلب می باشد.
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '123574896',
'charset' => 'utf8',
];
?>
مرحله 2 - برای دسترسی به DB connection می توانید از عبارات منظم یا expression استفاده کنید.
Yii::$app->db
برای پیکربندی یکDB connection ، شما باید DSN مخفف Data Source Name خود را از طریق ویژگی dsn مشخص کنید. فرمت DSN برای databaseهای مختلف متفاوت است :
- MySQL, MariaDB − mysql:host = localhost;dbname = mydb
- PostgreSQL − pgsql:host = localhost;port = 5432;dbname = mydb
- SQLite − sqlite:/path/to/db/file
- MS SQL Server (via sqlsrv driver) − sqlsrv:Server = localhost;Database = mydb
- MS SQL Server (via mssql driver) − mssql:host = localhost;dbname = mydb
- MS SQL Server (via dblib driver) − dblib:host = localhost;dbname = mydb
- CUBRID − cubrid:dbname = mydb;host = localhost;port = 33000
- Oracle − oci:dbname = //localhost:1521/mydb
برای نمایش query های پایگاه داده ما به data نیاز داریم.
آماده سازی DB
مرحله 1 - ایجاد یک پایگاه داده جدید: پایگاه داده را می توان به دو روش زیر ایجاد نمود:
- در ترمینال، دستور زیر را اجرا نمایید.
mysql -u root –p
- ایجاد یک پایگاه داده جدید از طریق دستورزیر:
CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci؛
مرحله 2 - connection پایگاه داده را در فایل config/db.php پیکربندی کنید. تنظیمات زیر برای سیستم مورد استفاده کنونی می باشد.
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '12345',
'charset' => 'utf8',
];
?>
مرحله 3 - داخل دایرکتوری ریشه، دستور ./yii migrate/create test_table را اجرا کنید. این فرمان یک database migration را برای مدیریت DB ایجاد می کند. فایل migration باید در پوشه migrations در ریشه پروژه قرار بگیرد.
مرحله 4 - فایل migration را (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", "user1@gmail.com"],
["User2", "user2@gmail.com"],
["User3", "user3@gmail.com"],
["User4", "user4@gmail.com"],
["User5", "user5@gmail.com"],
["User6", "user6@gmail.com"],
["User7", "user7@gmail.com"],
["User8", "user8@gmail.com"],
["User9", "user9@gmail.com"],
["User10", "user10@gmail.com"],
["User11", "user11@gmail.com"],
]);
}
public function safeDown() {
$this->dropTable('user');
}
}
?>
migration بالا یک جدول به نام user با چنیین فیلدهایی ایجاد می کند: id, name, email. همچنین تعدادی user نیز به جدول مان اضافه می نماید.
مرحله 5 - داخل ریشه پروژه دستور ./yii migrate را اجرا کنید. تا migraton به Database مان اعمال شود.
مرحله 6 - حالا ما باید یک مدل برای جدول user مان ایجاد کنیم. برای سادگی کار، ما قصد داریم از ابزار تولید کد Gii استفاده کنیم.
این آدرس را باز کنید: url: http://localhost:8080/index.php?r=gii. سپس بر روی دکمه “Start” زیر هدر “Model generator” کلیک کنید. نام جدول را user و نام کلاسِ مدل را MyUser بگذارید، روی دکمه “Preview” کلیک کنید و در نهایت روی دکمه “Generate” کلیک نمایید.
مدل MyUser باید در دایرکتوری models ظاهر شود.
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…