Yii - Veritabanı Erişimi

Yii DAO (Veritabanı Erişim Nesnesi), veritabanlarına erişim için bir API sağlar. Ayrıca diğer veritabanı erişim yöntemlerinin temelini oluşturur: aktif kayıt ve sorgu oluşturucu.

Yii DAO aşağıdaki veritabanlarını destekler -

  • MySQL
  • MSSQL
  • SQLite
  • MariaDB
  • PostgreSQL
  • ORACLE
  • CUBRID

Veritabanı Bağlantısı Oluşturma

Step 1 - Bir veritabanı bağlantısı oluşturmak için, yii \ db \ Connection sınıfının bir örneğini oluşturmanız gerekir.

$mydb = new yii\db\Connection([
   'dsn' => 'mysql:host=localhost;dbname=mydb',
   'username' => 'username',
   'password' => 'password',
   'charset' => 'utf8',
]);

Yaygın bir uygulama, uygulama bileşenleri içinde bir DB bağlantısı yapılandırmaktır. Örneğin, temel uygulama şablonunda, DB bağlantı yapılandırması,config/db.php dosya aşağıdaki kodda gösterildiği gibi.

<?php
   return [
      'class' => 'yii\db\Connection',
      'dsn' => 'mysql:host = localhost;dbname = helloworld',
      'username' => 'vladimir',
      'password' => '123574896',
      'charset' => 'utf8',
   ];
?>

Step 2 - DB bağlantısına erişmek için bu ifadeyi kullanabilirsiniz.

Yii::$app->db

Bir DB bağlantısını yapılandırmak için, DSN'sini (Veri Kaynağı Adı) dsnEmlak. DSN formatı farklı veritabanları için değişir -

  • MySQL, MariaDB - mysql: host = localhost; dbname = mydb

  • PostgreSQL - pgsql: host = localhost; port = 5432; dbname = mydb

  • SQLite - sqlite: / yol / db / dosya

  • MS SQL Server (via sqlsrv driver) - sqlsrv: Sunucu = localhost; Veritabanı = 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

Veritabanı sorgulamasını çalışırken göstermek için verilere ihtiyacımız var.

DB'yi hazırlama

Step 1- Yeni bir veritabanı oluşturun. Veritabanı aşağıdaki iki şekilde hazırlanabilir.

  • Terminalde mysql -u root –p komutunu çalıştırın .

  • CREATE DATABASE ile yeni bir veritabanı oluşturun helloworld CHARACTER SET utf8 COLLATE utf8_general_ci;

Step 2 - Veri tabanı bağlantısını yapılandırın. config/db.phpdosya. Aşağıdaki konfigürasyon şu anda kullanılan sistem içindir.

<?php
   return [
      'class' => 'yii\db\Connection',
      'dsn' => 'mysql:host = localhost;dbname = helloworld',
      'username' => 'vladimir',
      'password' => '12345',
      'charset' => 'utf8',
   ];
?>

Step 3 - Kök klasörün içinde run ./yii migrate/create test_table. Bu komut, DB'mizi yönetmek için bir veritabanı geçişi yaratacaktır. Taşıma dosyası,migrations proje kök klasörü.

Step 4 - Taşıma dosyasını değiştirin (m160106_163154_test_table.php bu durumda) bu şekilde.

<?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');
      }
   }
?>

Yukarıdaki geçiş, bir userBu alanların bulunduğu tablo: id, ad ve e-posta. Ayrıca birkaç demo kullanıcısı ekler.

Step 5 - Proje kökünün içinde run ./yii migrate veri tabanına geçişi uygulamak için.

Step 6 - Şimdi, bizim için bir model oluşturmamız gerekiyor. usertablo. Basitlik uğruna, kullanacağızGiikod oluşturma aracı. Aç şunuurl: http://localhost:8080/index.php?r=gii. Ardından, "Model oluşturucu" başlığının altındaki "Başlat" düğmesine tıklayın. Tablo Adını ("kullanıcı") ve Model Sınıfını ("MyUser") doldurun, "Önizleme" düğmesini tıklayın ve son olarak "Oluştur" düğmesini tıklayın.

MyUser modeli modeller dizininde görünmelidir.