首頁  >  文章  >  php框架  >  yii框架怎麼連接資料庫

yii框架怎麼連接資料庫

(*-*)浩
(*-*)浩原創
2019-11-27 13:57:433182瀏覽

yii框架怎麼連接資料庫

yii框架配置資料庫連接

#開始之前,請確保你已經安裝了PHP PDO 擴充功能和你所使用的資料庫的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 文件,去代表和讀取country表的數據。

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

這個 Country 類別繼承自 yii\db\ActiveRecord。你不用在裡面寫任何程式碼。只需要像現在這樣,Yii 就能根據類別名稱去猜測對應的資料表名。

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

使用Country 類別可以輕鬆操作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();

資訊: 活動記錄是物件導向、功能強大的存取和操作資料庫資料的方式。你可以在活動記錄章節中了解更多。除此之外你還可以使用另一種更原生的被稱做資料存取物件的方法來操作資料庫資料。

建立動作

為了向最終用戶顯示國家數據,你需要建立一個操作。相較於先前小節掌握的在 site 控制器中建立操作, 在這裡為所有和國家相關的資料新建一個控制器更加合理。新控制器名稱為 CountryController,並在其中建立一個 index 操作, 如下:

<?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 物件的使命主要有兩點:

為 SQL 查詢語句設定 offset 和 limit 子句, 確保每個請求只需傳回一頁資料(本例中每頁是 5 行)。

在檢視中顯示一個由頁碼清單組成的分頁器, 這點將在後面的段落中解釋。

在程式碼結尾,index 操作渲染一個名為 index 的視圖, 並傳遞國家資料和分頁資訊進去。

建立檢視

在 views 目錄下先建立一個名為 country 的子目錄。這個目錄儲存所有由 country 控制器渲染的視圖。在 views/country 目錄下 建立一個名為 index.php 的視圖文件,內容如下:

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

這個視圖包含兩部分用以顯示國家資料。第一部分遍歷國家資料並以無序 HTML 清單渲染出來。第二部分使用 yii\widgets\LinkPager 去渲染從操作傳來的分頁資訊。小工具 LinkPager 顯示一個分頁按鈕的清單。點擊任何一個按鈕都會跳到對應的分頁。

試運行

瀏覽器訪問下面的URL 看看能否運作:

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

yii框架怎麼連接資料庫

#

以上是yii框架怎麼連接資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn