Yii - Datenbankzugriff

Yii DAO (Database Access Object) bietet eine API für den Zugriff auf Datenbanken. Es dient auch als Grundlage für andere Datenbankzugriffsmethoden: Active Record und Query Builder.

Yii DAO unterstützt die folgenden Datenbanken:

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

Erstellen einer Datenbankverbindung

Step 1 - Um eine Datenbankverbindung herzustellen, müssen Sie eine Instanz der Klasse yii \ db \ Connection erstellen.

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

Es ist üblich, eine DB-Verbindung innerhalb der Anwendungskomponenten zu konfigurieren. In der Basisanwendungsvorlage befindet sich beispielsweise die DB-Verbindungskonfiguration in derconfig/db.php Datei wie im folgenden Code gezeigt.

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

Step 2 - Um auf die DB-Verbindung zuzugreifen, können Sie diesen Ausdruck verwenden.

Yii::$app->db

Um eine DB-Verbindung zu konfigurieren, müssen Sie ihren DSN (Data Source Name) über das angeben dsnEigentum. Das DSN-Format variiert für verschiedene Datenbanken -

  • 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; Datenbank = 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

Um die Datenbankabfrage in Aktion zu zeigen, benötigen wir Daten.

DB vorbereiten

Step 1- Erstellen Sie eine neue Datenbank. Die Datenbank kann auf zwei Arten vorbereitet werden.

  • Führen Sie im Terminal mysql -u root –p aus .

  • Erstellen Sie eine neue Datenbank über CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci;

Step 2 - Konfigurieren Sie die Datenbankverbindung in der config/db.phpDatei. Die folgende Konfiguration gilt für das derzeit verwendete System.

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

Step 3 - Im Stammordner run ./yii migrate/create test_table. Dieser Befehl erstellt eine Datenbankmigration zur Verwaltung unserer Datenbank. Die Migrationsdatei sollte in der angezeigt werdenmigrations Ordner des Projektstamms.

Step 4 - Ändern Sie die Migrationsdatei (m160106_163154_test_table.php in diesem Fall) auf diese Weise.

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

Die obige Migration erstellt eine userTabelle mit diesen Feldern: ID, Name und E-Mail. Es werden auch einige Demo-Benutzer hinzugefügt.

Step 5 - Im Projektstamm run ./yii migrate um die Migration auf die Datenbank anzuwenden.

Step 6 - Jetzt müssen wir ein Modell für unsere erstellen userTabelle. Der Einfachheit halber werden wir das verwendenGiiTool zur Codegenerierung. Öffne dasurl: http://localhost:8080/index.php?r=gii. Klicken Sie dann auf die Schaltfläche "Start" unter der Überschrift "Modellgenerator". Geben Sie den Tabellennamen ("Benutzer") und die Modellklasse ("MyUser") ein, klicken Sie auf die Schaltfläche "Vorschau" und schließlich auf die Schaltfläche "Generieren".

Das MyUser-Modell sollte im Modellverzeichnis angezeigt werden.