Heim >PHP-Framework >YII >So verbinden Sie das yii-Framework mit der Datenbank

So verbinden Sie das yii-Framework mit der Datenbank

(*-*)浩
(*-*)浩Original
2019-11-27 13:57:433275Durchsuche

So verbinden Sie das yii-Framework mit der Datenbank

YII-Framework-Konfigurationsdatenbankverbindung

Bevor Sie beginnen, stellen Sie sicher, dass Sie die PHP-PDO-Erweiterung und Ihre installiert haben Der PDO-Treiber der verwendeten Datenbank (z. B. pdo_mysql von MySQL). Für den Einsatz relationaler Datenbanken ist dies eine Grundvoraussetzung. (Empfohlenes Lernen: YII-Framework )

Nachdem die Treiber- und Erweiterungsinstallation verfügbar ist,

öffnen Sie die config/db.php-Änderung im Konfigurationsparameter in der Änderung, die Ihrer entspricht Datenbankkonfiguration. Die Datei enthält standardmäßig diesen Inhalt:

<?php
return [
    &#39;class&#39; => &#39;yii\db\Connection&#39;,
    &#39;dsn&#39; => &#39;mysql:host=localhost;dbname=yii2basic&#39;,
    &#39;username&#39; => &#39;root&#39;,
    &#39;password&#39; => &#39;&#39;,
    &#39;charset&#39; => &#39;utf8&#39;,
];

config/db.php ist ein typisches dateibasiertes Konfigurationstool. Diese Datei konfiguriert die Erstellungs- und Initialisierungsparameter der Datenbankverbindung yiidbConnection. Die angewendete SQL-Abfrage basiert auf dieser Datenbank.

Auf die oben konfigurierte Datenbankverbindung kann in der Anwendung über den Ausdruck Yii::$app->db zugegriffen werden.

信息: config/db.php 将被包含在应用配置文件 config/web.php 中, 后者指定了整个应用如何初始化。

Aktivitätsdatensatz erstellen

Erstellen Sie ein Klassenland, das von der Aktivitätsdatensatzklasse erbt, und fügen Sie es in die Datei models/Country.php ein, um das Land darzustellen und zu lesen Tabellendaten.

<?php
namespace app\models;
use yii\db\ActiveRecord;
class Country extends ActiveRecord
{
}

Diese Country-Klasse erbt von yiidbActiveRecord. Sie müssen keinen Code darin schreiben. Genau wie jetzt kann Yii den entsprechenden Datentabellennamen anhand des Klassennamens erraten.

信息: 如果类名和数据表名不能直接对应, 可以覆写 tableName() 方法去显式指定相关表名。

Sie können Ländertabellendaten einfach mit der Country-Klasse bearbeiten, wie zum Beispiel mit diesem Code:

use app\models\Country;
// 获取 country 表的所有行并以 name 排序
$countries = Country::find()->orderBy(&#39;name&#39;)->all();
// 获取主键为 “US” 的行
$country = Country::findOne(&#39;US&#39;);
// 输出 “United States”
echo $country->name;
// 修改 name 为 “U.S.A.” 并在数据库中保存更改
$country->name = &#39;U.S.A.&#39;;
$country->save();

Information: Aktive Datensätze sind eine objektorientierte, leistungsstarke Möglichkeit, auf Datenbankdaten zuzugreifen und diese zu bearbeiten. Weitere Informationen finden Sie im Kapitel Aktivitätsprotokollierung. Darüber hinaus können Sie auch eine andere, nativere Methode namens Datenzugriffsobjekt verwenden, um Datenbankdaten zu bearbeiten.

Aktion erstellen

Um Endbenutzern Länderdaten anzuzeigen, müssen Sie eine Aktion erstellen. Im Vergleich zum Erstellungsvorgang im Site-Controller, der im vorherigen Abschnitt beschrieben wurde, ist es sinnvoller, hier einen neuen Controller für alle länderbezogenen Daten zu erstellen. Benennen Sie den neuen Controller „CountryController“ und erstellen Sie darin eine Indexaktion wie folgt:

<?php

namespace app\controllers;

use yii\web\Controller;
use yii\data\Pagination;
use app\models\Country;

class CountryController extends Controller
{
    public function actionIndex()
    {
        $query = Country::find();

        $pagination = new Pagination([
            &#39;defaultPageSize&#39; => 5,
            &#39;totalCount&#39; => $query->count(),
        ]);

        $countries = $query->orderBy(&#39;name&#39;)
            ->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();

        return $this->render(&#39;index&#39;, [
            &#39;countries&#39; => $countries,
            &#39;pagination&#39; => $pagination,
        ]);
    }
}

Speichern Sie den obigen Code in der Datei „controllers/CountryController.php“. Die Indexoperation

ruft die aktive Datensatzmethode Country::find() auf, um eine Abfrageanweisung zu generieren und alle Daten aus der Ländertabelle abzurufen. Um die Anzahl der pro Anfrage zurückgegebenen Länder zu begrenzen, wird die Abfrage mithilfe von yiidataPagination-Objekten paginiert. Das Paginierungsobjekt hat zwei Hauptaufgaben:

Setzen Sie Offset- und Limit-Klauseln für SQL-Abfrageanweisungen, um sicherzustellen, dass jede Anfrage nur eine Seite mit Daten zurückgibt (in diesem Beispiel besteht jede Seite aus 5 Zeilen).

Zeigt einen Paginator an, der aus einer Liste von Seitenzahlen in der Ansicht besteht, wie in einem späteren Absatz erläutert.

Am Ende des Codes rendert die Indexoperation eine Ansicht mit dem Namen index und übergibt die Länderdaten und Paging-Informationen an diese.

Ansicht erstellen

Erstellen Sie zunächst ein Unterverzeichnis mit dem Namen „Land“ im Ansichtenverzeichnis. In diesem Verzeichnis werden alle vom Ländercontroller gerenderten Ansichten gespeichert. Erstellen Sie eine Ansichtsdatei mit dem Namen index.php im Verzeichnis „views/country“ mit folgendem Inhalt:

<?php
use yii\helpers\Html;
use yii\widgets\LinkPager;
?>
<h1>Countries</h1>
<ul>
<?php foreach ($countries as $country): ?>
    <li>
        <?= Html::encode("{$country->name} ({$country->code})") ?>:
        <?= $country->population ?>
    </li>
<?php endforeach; ?>
</ul>

<?= LinkPager::widget([&#39;pagination&#39; => $pagination]) ?>

Diese Ansicht enthält zwei Teile zur Anzeige von Länderdaten. Der erste Teil durchläuft die Länderdaten und stellt sie als ungeordnete HTML-Liste dar. Der zweite Teil verwendet yiiwidgetsLinkPager, um die von der Operation übergebenen Paging-Informationen darzustellen. Das Widget LinkPager zeigt eine Liste von Paging-Schaltflächen an. Durch Klicken auf eine beliebige Schaltfläche wird zur entsprechenden Seite gesprungen.

Testlauf

Besuchen Sie die folgende URL in Ihrem Browser, um zu sehen, ob es funktioniert:

http://hostname/index.php?r=country/index

So verbinden Sie das yii-Framework mit der Datenbank

Das obige ist der detaillierte Inhalt vonSo verbinden Sie das yii-Framework mit der Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn