## 創建數據庫
~~~
/* 創建數據庫 */
DROP DATABASE IF EXISTS yii2basic;
CREATE DATABASE yii2basic DEFAULT CHARACTER SET UTF8MB4;
USE yii2basic;
/* 創建明星表 */
DROP TABLE IF EXISTS yii_star;
CREATE TABLE yii_star(
star_id INT PRIMARY KEY AUTO_INCREMENT,
star_name VARCHAR(10),
star_desc VARCHAR(50),
star_age INT
) ENGINE = INNODB DEFAULT CHARSET = UTF8MB4;
INSERT INTO yii_star VALUES(NULL, '劉德華', '歌手', 50);
INSERT INTO yii_star VALUES(NULL, '郭富城', '歌手', 49);
INSERT INTO yii_star VALUES(NULL, '張學友', '歌手', 48);
INSERT INTO yii_star VALUES(NULL, '黎明', '歌手', 47);
INSERT INTO yii_star VALUES(NULL, '梁朝偉', '演員', 50);
INSERT INTO yii_star VALUES(NULL, '金城武', '演員', 49);
INSERT INTO yii_star VALUES(NULL, '孫紅雷', '演員', 48);
INSERT INTO yii_star VALUES(NULL, '鄧超', '逗逼', 47);
~~~
## 配置數據庫
> F:\wwwroot\Yii\basic\config\db.php
~~~
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2basic',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
];
~~~
確保在web.php中已經加載了數據庫的配置文件
> F:\wwwroot\Yii\basic\config\web.php

## 活動記錄類
> 就是針對某個表可以進行增刪改查的類
文件地址:`F:\wwwroot\Yii\basic\models\Star.php`
文件內容:
~~~
<?php
namespace app\models;
use yii\db\ActiveRecord;
// 明星類
class Star extends ActiveRecord{
// 設置表名
public static function tableName(){
return "yii_star";
}
}
~~~
## 模型表單類
> F:\wwwroot\Yii\basic\models\StarForm.php
~~~
<?php
namespace app\models;
use yii\base\Model;
// 明星表單
class StarForm extends Model{
// 姓名
public $nick;
// 介紹
public $desc;
// 年齡
public $age;
// 規則
return [
[["nick", "age"], "required"]
];
}
~~~
## 控制器動作
> F:\wwwroot\Yii\basic\controllers\SiteController.php
引入模型和表單
~~~
use app\models\Star;
use app\models\StarForm;
use yii\data\Pagination;
~~~
其中Pagination是用于處理分頁的一個類
在控制器中追加動作代碼
~~~
// 明星動作
public function actionStar(){
// 行為判斷
$ac = !isset($_REQUEST["ac"]) ? "" : $_REQUEST["ac"];
switch ($ac) {
// 新增數據
case "insert":
return "insert";
// 修改數據
case "update":
return "update";
// 查詢數據
default:
// 所有明星
$query = Star::find()->where("star_age >= 47");
// 分頁對象
$page = new Pagination([
// 每頁數量
"defaultPageSize" => 5,
// 總共數量
"totalCount" => $query->count()
]);
// 排序截斷并返回本頁的數據
$stars = $query->orderBy("star_age ASC")->offset($page->offset)->limit($page->limit)->all();
// 返回內容
return $this->render("star\index", [
"starList" => $stars,
"page" => $page
]);
}
}
~~~
## 視圖文件
> F:\wwwroot\Yii\basic\views\site\star\index.php
~~~
<?php
// 引入類
use yii\helpers\Html;
use yii\widgets\LinkPager;
// 設置標題
$this->title = "明星列表";
?>
<h1>所有明星的列表</h1>
<ul>
<?php foreach($starList as $star): ?>
<li>
<p>姓名:<strong><?= Html::encode("{$star->star_name}");?></strong></p>
<p>介紹:<?= Html::encode("{$star->star_desc}");?></p>
<p>年齡:<i><?= Html::encode("{$star->star_age}");?></i></p>
</li>
<?php endforeach; ?>
<!-- 分頁數據 -->
<?= LinkPager::widget(["pagination" => $page]); ?>
</ul>
~~~
## 測試結果
http://127.0.0.1/index.php?r=site/star
