ホームページ  >  記事  >  PHPフレームワーク  >  yii フレームワークをデータベースに接続する方法

yii フレームワークをデータベースに接続する方法

(*-*)浩
(*-*)浩オリジナル
2019-11-27 13:57:433223ブラウズ

yii フレームワークをデータベースに接続する方法

yii フレームワーク構成データベース接続

始める前に、PHP PDO 拡張機能がインストールされていることを確認してください。 your 使用するデータベースの PDO ドライバー (MySQL の pdo_mysql など)。リレーショナル データベースを使用する場合、これが基本要件です。 (推奨される学習: yii フレームワーク)

ドライバーと拡張機能がインストールされて使用可能になったら、config/db.php を開いて、内部の構成パラメーターを次のように変更します。データベース構成に対応します。 ファイルには、デフォルトで次の内容が含まれています。

<?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 は、典型的なファイルベースの構成ツールです。このファイルは、データベース接続 yii\db\Connection の作成および初期化パラメータを構成し、適用される SQL クエリはこのデータベースに基づいています。

上で設定したデータベース接続には、Yii::$app->db 式を介してアプリケーションでアクセスできます。

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

アクティブ レコードの作成

アクティブ レコード クラスから継承するクラス Country を作成し、それを models/ Country.php ファイルに配置して国を表し、読み取ることができます。テーブルデータ。

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

この Country クラスは yii\db\ActiveRecord から継承します。コードを記述する必要はありません。現在と同様に、Yii はクラス名に基づいて対応するデータテーブル名を推測できます。

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

次のコードのように、 Country クラスを使用して国テーブル データを簡単に操作できます。

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();

情報: Active Record は、データベース データにアクセスして操作するためのオブジェクト指向の強力な方法です。詳細については、「アクティビティ ログ」の章をご覧ください。さらに、データ アクセス オブジェクトと呼ばれる別のよりネイティブなメソッドを使用して、データベース データを操作することもできます。

アクションの作成

エンド ユーザーに国データを表示するには、アクションを作成する必要があります。前のセクションでマスターしたサイト コントローラーでの作成操作と比較して、ここですべての国関連データに対して新しいコントローラーを作成する方が合理的です。新しいコントローラーに CountryController という名前を付け、次のようにその中にインデックス アクションを作成します。

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

上記のコードをcontrollers/ CountryController.php ファイルに保存します。

index オペレーションは、アクティブ レコード Country::find() メソッドを呼び出してクエリ ステートメントを生成し、country テーブルからすべてのデータを取得します。リクエストごとに返される国の数を制限するために、クエリは yii\data\Pagination オブジェクトを使用してページ分割されます。 Pagination オブジェクトには 2 つの主要な使命があります。

SQL クエリ ステートメントの offset 句とlimit 句を設定して、各リクエストが 1 ページのデータのみを返すようにします (この例では、各ページは 5 行です)。

ページ番号のリストで構成されるページネータをビューに表示します。これについては次の段落で説明します。

コードの最後で、インデックス操作によってインデックスという名前のビューがレンダリングされ、そこに国データとページング情報が渡されます。

ビューの作成

まず、views ディレクトリに country という名前のサブディレクトリを作成します。このディレクトリには、カントリー コントローラーによってレンダリングされたすべてのビューが保存されます。次の内容を含む、index.php という名前のビュー ファイルを views/country ディレクトリに作成します。

<?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]) ?>

このビューには、国データを表示する 2 つの部分が含まれています。最初の部分は国データをループし、順序なしの HTML リストとしてレンダリングします。 2 番目の部分では、yii\widgets\LinkPager を使用して、オペレーションから渡されたページング情報をレンダリングします。ウィジェット LinkPager には、ページング ボタンのリストが表示されます。いずれかのボタンをクリックすると、対応するページにジャンプします。

#試用実行

# ブラウザで次の URL にアクセスして、動作するかどうかを確認してください:

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

以上がyii フレームワークをデータベースに接続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。