## 创建数据库
~~~
/* 创建数据库 */
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
![](https://box.kancloud.cn/2015-11-22_56514c0d8d20e.png)
## 活动记录类
> 就是针对某个表可以进行增删改查的类
文件地址:`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
![](https://box.kancloud.cn/2015-11-22_56514c0da9100.png)